Hallo zusammen,
ich müsste einen Haufen Dateien, die diese Struktur haben: .....
aaaaa11111.xyz
... per Batch in: ....
aaaaa.xyz
... umbenennen.
Qauasi nur die ersten 5 Zeichen plus extension.
Denke das wird ne for schleife, weiß aber nicht wie ich gesuchten Zeichen definiere, könnt ihr mir helfen.
Gruß Michel
Batch - Dateinamen anpassen
Erstellt von
michel0203
, 28. Feb 2008 09:45
7 Antworten in diesem Thema
#3
Geschrieben 29. Februar 2008 - 07:10
Mir fehlt immer noch die Erleuchtung.
Ich dachte daran die Sache etwa so einzuleiten.
dir /b *.xyz > %log%
Somit habe ich die benötigten Dateinamen in einer txt.
Nun such ich nach einer Möglichkeit aus
aaaaa11111.xyz ..... aaaaa.xyz zu machen
Quasi, die ersten 5 Zeichen stehen lassen, 6-10 entfernen, extension lassen.
Ich dachte daran die Sache etwa so einzuleiten.
dir /b *.xyz > %log%
Somit habe ich die benötigten Dateinamen in einer txt.
Nun such ich nach einer Möglichkeit aus
aaaaa11111.xyz ..... aaaaa.xyz zu machen
Quasi, die ersten 5 Zeichen stehen lassen, 6-10 entfernen, extension lassen.
#4
Geschrieben 29. Februar 2008 - 08:38
Moin michel0203,
falls die Anforderung auch umformuliert werden kann in "entferne alle Ziffern aus dem Dateinamen", sprich alle Dateinamen beginnen mit einer Buchstabenfolge, die erhalten bleiben soll gefolgt von einer Zahlenfolge, die entsorgt werden darf, dann reicht eine kleine Zeile vom CMD-Prompt aus.
Demo:
Aber so oder so wirst Du Schwierigkeiten bekommen, alle "noch nicht umbenannten" Dateien zu trennen von den bereits umbenannten, wenn Du diese Zeile mehrmals abfeuerst.
Um Fehler beim Rename zu vermeiden, solltest Du also ergänzen.
Grüße
Biber
falls die Anforderung auch umformuliert werden kann in "entferne alle Ziffern aus dem Dateinamen", sprich alle Dateinamen beginnen mit einer Buchstabenfolge, die erhalten bleiben soll gefolgt von einer Zahlenfolge, die entsorgt werden darf, dann reicht eine kleine Zeile vom CMD-Prompt aus.
Demo:
>for %i in (d:\temp\*.xyz) do @for /f "delims=1234567890" %a in ("%~ni") do @echo ren "%i" "%a%~xi"
ren "d:\temp\aaaaa11111.xyz" "aaaaa.xyz"
Aber so oder so wirst Du Schwierigkeiten bekommen, alle "noch nicht umbenannten" Dateien zu trennen von den bereits umbenannten, wenn Du diese Zeile mehrmals abfeuerst.
Um Fehler beim Rename zu vermeiden, solltest Du also ergänzen.
.....do IF "%~ni" NEQ "%a" ren "%i" "%a%~xi"...um zu vermeiden, dass versucht wird, "aaaaa.xyz" in "aaaaa.xyz" umzubenennen.
Grüße
Biber
#5
Geschrieben 29. Februar 2008 - 11:15
Hi Biber, danke erst einmal.
Funzt (noch) nicht.
Habe es mal in einen Batch gepackt:
for %%i in (D:\batches_scripte\Spielwiese\*.xyz) do @for /f "delims=1234567890" %a in ("%~ni") do @echo ren "%%i" "%a%~xi" ren "D:\batches_scripte\Spielwiese\aaaaa11111.xyz" "aaaaa.xyz"
Kann auch kein "Debug" einsehen, funzt einfach nicht.
gruß michel
Funzt (noch) nicht.
Habe es mal in einen Batch gepackt:
for %%i in (D:\batches_scripte\Spielwiese\*.xyz) do @for /f "delims=1234567890" %a in ("%~ni") do @echo ren "%%i" "%a%~xi" ren "D:\batches_scripte\Spielwiese\aaaaa11111.xyz" "aaaaa.xyz"
Kann auch kein "Debug" einsehen, funzt einfach nicht.
gruß michel
#6
Geschrieben 29. Februar 2008 - 15:01
Moin michel0203,
im batch müssen alle "einfachen" Prozentzeichen vor Zählvariablen durch "doppelte" ersetzt werden.
Debuggen von Einzeilern ist ein bisschen tricky, aber wenn es bezahlt wird, mach ich Dir das auch ;-)
Grüße
Biber
im batch müssen alle "einfachen" Prozentzeichen vor Zählvariablen durch "doppelte" ersetzt werden.
for %%i in (D:\batches_scripte\Spielwiese\*.xyz) do @(
for /f "delims=1234567890" %%a in ("%~ni") do @(
echo Ist ren "%%i" "%%a%%~xi"
Echo Soll: ren "D:\batches_scripte\Spielwiese\aaaaa11111.xyz" "aaaaa.xyz"
))
Debuggen von Einzeilern ist ein bisschen tricky, aber wenn es bezahlt wird, mach ich Dir das auch ;-)
Grüße
Biber
#8
Geschrieben 03. März 2008 - 09:02
Hi Biber,
super, Danke!
-----------------------------------------------------------------------------------------------------
for %%i in (D:\batches_scripte\Spielwiese\*.xyz) do @(
for /f "delims=1234567890" %%a in ("%%~ni") do @(
ren "%%i" "%%a%%~xi"
))
-----------------------------------------------------------------------------------------------------
Der tut,
ich hoffe ich habe noch die Zeit über die Funktion hinaus das Dingen auch noch zu verstehen
Gruß Micha
super, Danke!
-----------------------------------------------------------------------------------------------------
for %%i in (D:\batches_scripte\Spielwiese\*.xyz) do @(
for /f "delims=1234567890" %%a in ("%%~ni") do @(
ren "%%i" "%%a%%~xi"
))
-----------------------------------------------------------------------------------------------------
Der tut,
ich hoffe ich habe noch die Zeit über die Funktion hinaus das Dingen auch noch zu verstehen
Gruß Micha










