For Schleife mit Datei umbenennung
Nach längerem suchen, auch in diesem Forum bin ich leider zu keiner funktionierenden Lösung für mein Problem gekommen.
Ich möchte per Batch ein Programm ausführen das mir Datei Formate umwandelt.
Dabei sollen neben der Datei - Endung auch die 4 hinteren Zeichen des Datei Namens umbenannt werden.
Beispiel "Z:\Tempdaten\503\503251-3-part.prt" wird zu "Z:\Tempdaten\503\503251-3-step.stp"
Bei meiner .exe ist -i=<Input> und -o=<output>
Meine bisherigen bemühungen sehen so aus. Ich schaffe es einfach nicht den geänderten Namen für den output zu bekommen.
Kann mir jemand helfen?
Gruß
didie08
Ich möchte per Batch ein Programm ausführen das mir Datei Formate umwandelt.
Dabei sollen neben der Datei - Endung auch die 4 hinteren Zeichen des Datei Namens umbenannt werden.
Beispiel "Z:\Tempdaten\503\503251-3-part.prt" wird zu "Z:\Tempdaten\503\503251-3-step.stp"
Bei meiner .exe ist -i=<Input> und -o=<output>
Meine bisherigen bemühungen sehen so aus. Ich schaffe es einfach nicht den geänderten Namen für den output zu bekommen.
dir %inputpath%\*.prt /S /B>d:\temp\part-list.txt
setlocal enabledelayedexpansion
for /f "tokens=* delims= " %%i in (d:\temp\part-list.txt) do (
set "stpname=%%i" & echo !stpname:~0,-8!>d:\temp\stpname.txt
SET /p variable=<d:\temp\stpname.txt
%STEP203UG_DIR%\step203ug.exe -i="%%i" -o="%variable%step.stp" -d=%definitions_file% -l="d:\temp\%%~ni.log"
)
Kann mir jemand helfen?
Gruß
didie08
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179472
Url: https://administrator.de/forum/for-schleife-mit-datei-umbenennung-179472.html
Ausgedruckt am: 22.12.2024 um 22:12 Uhr
7 Kommentare
Neuester Kommentar
Hallo didie08!
Soferne der Aufbau der Dateinamen immer dem selben Schema (#####-#-part.prt) folgt (und es im Pfad weder "-" noch "." gibt), sollte doch eigentlich
genügen (ungetestet).
Zum gefahrlosen Testen steht nach dem "
[Edit] Dein eigener Ansatz (auf das Nötigste reduziert) könnte etwa so funktionieren:
[/Edit]
Grüße
bastla
Soferne der Aufbau der Dateinamen immer dem selben Schema (#####-#-part.prt) folgt (und es im Pfad weder "-" noch "." gibt), sollte doch eigentlich
for /f "tokens=1-4 delims=-." %%i in ('dir /s/b "%inputpath%\*-*-part.prt') do echo %STEP203UG_DIR%\step203ug.exe -i="%%i-%%j-%%k.%%l" -o="%%i-%%j-step.stp" -d=%definitions_file% -l="d:\temp\%%~ni-%%j-%%k.log"
Zum gefahrlosen Testen steht nach dem "
do
" ein "echo
" ...[Edit] Dein eigener Ansatz (auf das Nötigste reduziert) könnte etwa so funktionieren:
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir "%inputpath%\*.prt" /S /B') do (
set "stpname=%%i" & set "variable=!stpname:~0,-8!"
%STEP203UG_DIR%\step203ug.exe -i="%%i" -o="%variable%step.stp" -d=%definitions_file% -l="d:\temp\%%~ni.log"
)
Grüße
bastla
Hallo didie98!
BTW:
... ansonsten: Bei "
Grüße
bastla
Bei der Hilfe die du mir für meinen eigenen Ansatz gegeben hast, wird leider die %valiable% immer noch nicht aufgelöst. Fällt die da noch was ein?
Ja - ich könnte es zur Abwechslung mal richtig machen setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir "%inputpath%\*.prt" /S /B') do (
set "stpname=%%i" & set "variable=!stpname:~0,-8!"
%STEP203UG_DIR%\step203ug.exe -i="%%i" -o="!variable!step.stp" -d=%definitions_file% -l="d:\temp\%%~ni.log"
)
das Problem, dass weiter vorne im Pfad weitere "-" auftauchen können.
ließe sich mit einer zweiten "for
"-Schleife (die ich vorerst vermeiden wollte) eliminieren - weiterhin ungetestet dann so:for /f "delims=" %%a in ('dir /s/b "%inputpath%\*-*-part.prt') do (
for /f "tokens=1-2 delims=-" %%i in ("%%~na") do echo %STEP203UG_DIR%\step203ug.exe -i="%%a" -o="%%~dpa%%i-%%j-step.stp" -d=%definitions_file% -l="d:\temp\%%~na.log"
)
Der ren Befehl hatte ich auch schon probiert. Der geht aber nicht. Es kommt ein Syntaxfehler.
Ein Umbenennen scheint ja auch nicht zielführend, wenn Du den alten und den neuen Namen benötigst ...... ansonsten: Bei "
ren
" darf die Angabe des neuen Namens keinen Pfad beinhalten.Grüße
bastla
Hi,
ok, einen Syntaxfehler bekomme ich nicht, aber auch nicht den gewünschten Dateinamen. Dennoch funktioniert es, WENN der erste Teil immer die gleiche Länge hat. Dann kannst du folgendes machen:
Datei 503251-3-part.prt soll werden 503251-3-step.stp
der Befehl lautet dann:
ren ?????????part.prt ?????????step.stp
eventuell kannst du dann eine Batch machen:
ren ?part.prt ?step.stp
ren ??part.prt ??step.stp
ren ???part.prt ???step.stp
und so weiter...
Viel Erfolg,
Sebezahn
ok, einen Syntaxfehler bekomme ich nicht, aber auch nicht den gewünschten Dateinamen. Dennoch funktioniert es, WENN der erste Teil immer die gleiche Länge hat. Dann kannst du folgendes machen:
Datei 503251-3-part.prt soll werden 503251-3-step.stp
der Befehl lautet dann:
ren ?????????part.prt ?????????step.stp
eventuell kannst du dann eine Batch machen:
ren ?part.prt ?step.stp
ren ??part.prt ??step.stp
ren ???part.prt ???step.stp
und so weiter...
Viel Erfolg,
Sebezahn
Hallo didie08!
Freut mich, wenn's jetzt passt ...
... ansonsten als Kurzfassung: "
Grüße
bastla
Freut mich, wenn's jetzt passt ...
Ich denke ich muss mich mal schlau machen was das !...! in einer For Schleife macht.
Schau Dir mal Tutorial zur FOR-Schleife an ...... ansonsten als Kurzfassung: "
delayedexpansion
" wird mit der Schreibweise "!variable!
" anstelle von "%variable%
" erst tatsächlich ausgeführt und nur so ist es möglich, in einer Schleife erstellte / veränderte Variablen dann auch gleich innerhalb dieser Schleife zu verwenden ...Grüße
bastla