Dateien mit delims und tokens umbennenen
Hallo Experten,
habe nach der Anleitung Tutorial zur FOR-Schleife mir ein Batch gebastelt, indem ich .html Dateien umbenenne. Das funktioniert irgendwie nicht. Was mache ich falsch?
Folgende Dateien sollen mit selben Namen angeglichen werden:
jpg-datei: 198_cng_083_1846.jpg
html-datei: sid_198_1846.html soll in 198_cng_083_1846.html umbenannt werden
Folgender code ergibt jedoch ein falsches Ergebnis:
Kann mir jemand helfen?
habe nach der Anleitung Tutorial zur FOR-Schleife mir ein Batch gebastelt, indem ich .html Dateien umbenenne. Das funktioniert irgendwie nicht. Was mache ich falsch?
Folgende Dateien sollen mit selben Namen angeglichen werden:
jpg-datei: 198_cng_083_1846.jpg
html-datei: sid_198_1846.html soll in 198_cng_083_1846.html umbenannt werden
Folgender code ergibt jedoch ein falsches Ergebnis:
:: %e = 1 = sid
:: %f = 2 = Akn
:: %g = 3 = AK
:: %h = 4 = L
FOR /F "delims=_ tokens=1,2,3,4" %%e in ('dir /a-d /b /s "*.jpg"') do (
copy sid_%%~ne_%%~nh.html %%~ne_%%~nf_%%~ng_%%~nh.html)
Kann mir jemand helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 30.11.2011 um 14:07:05 Uhr
Dateien mit delims und tokens umbennenen
Set /a rgc +=1#779
Content-ID: 177038
Url: https://administrator.de/forum/dateien-mit-delims-und-tokens-umbennenen-177038.html
Ausgedruckt am: 22.12.2024 um 12:12 Uhr
3 Kommentare
Neuester Kommentar
Moin majcho,
ich komme beim Testen bzw. Nachkaspern am CMD-Prompt mit den Tokens 2,3,4,5 zu keinem sinnvollen Ergebnis.
So funktioniert es bei mir (am CMD-Prompt):
Anmerkung:
Du musst natürlich nur den ersten Token [hier %e] mit %~ne von dem vorangestellten Laufwerk+Pfad befreien.
der zweite oder dritte Parameter %f und %g hat defaultmäßig kein Lw/Pfad vorangestellt (in diesem Fall, wenn erst Parameter 4 der letzte des Dateinamens ist)
Der letzte Tokens des "gesanten Dateinamens, hier also %h muss wieder mit %~nh von der Endung befreit werden.
ööööhm... zweimal lesen oder einfach zur Gegenprobe in der Demozeile jeweils (%e statt %~ne) und (%h statt %~nh) schreiben.
Grüße
Biber
ich komme beim Testen bzw. Nachkaspern am CMD-Prompt mit den Tokens 2,3,4,5 zu keinem sinnvollen Ergebnis.
So funktioniert es bei mir (am CMD-Prompt):
## Vorbereitung/Testdateien
d:\temp\test>for %i in (198_cng_083_1846.jpg sid_198_1846.html 339_cng_086_1381.jpg sid_339_1381.html) do @echo %i
198_cng_083_1846.jpg
sid_198_1846.html
339_cng_086_1381.jpg
sid_339_1381.html
d:\temp\test>for %i in (198_cng_083_1846.jpg sid_198_1846.html 339_cng_086_1381.jpg sid_339_1381.html) do @echo.>%i
d:\temp\test>dir /b
198_cng_083_1846.jpg
339_cng_086_1381.jpg
sid_198_1846.html
sid_339_1381.html
## test - Dateien liegen im aktuellen Pfad - keine Pfadangabe im DIR-Befehl
d:\temp\test>FOR /F "delims=_ tokens=1-4" %e in ('dir /a-d /b /s "*cng*.jpg"') do @echo DEMO ren %~dpesid_%~ne_%~nh.html %~ne_%f_%g_%~nh.html
DEMO ren d:\temp\test\sid_198_1846.html 198_cng_083_1846.html
DEMO ren d:\temp\test\sid_339_1381.html 339_cng_086_1381.html
d:\temp\test>e:
## test - von anderem lw/pfad aufgerufen
E:\>FOR /F "delims=_ tokens=1-4" %e in ('dir /a-d /b /s "D:\temp\test\*cng*.jpg"') do @echo DEMO ren %~dpesid_%~ne_%~nh.html %~ne_%f_%g_%~nh.html
DEMO ren D:\temp\test\sid_198_1846.html 198_cng_083_1846.html
DEMO ren D:\temp\test\sid_339_1381.html 339_cng_086_1381.html
Anmerkung:
Du musst natürlich nur den ersten Token [hier %e] mit %~ne von dem vorangestellten Laufwerk+Pfad befreien.
der zweite oder dritte Parameter %f und %g hat defaultmäßig kein Lw/Pfad vorangestellt (in diesem Fall, wenn erst Parameter 4 der letzte des Dateinamens ist)
Der letzte Tokens des "gesanten Dateinamens, hier also %h muss wieder mit %~nh von der Endung befreit werden.
ööööhm... zweimal lesen oder einfach zur Gegenprobe in der Demozeile jeweils (%e statt %~ne) und (%h statt %~nh) schreiben.
Grüße
Biber