Batch die Dateinamen ändert?
Ich möchte eine Batch Datei schreiben die einen teil aus einem Dateinamen löscht:
auftragsposition_3_A3-030430048230030122F00_A3-030430048230030122F00.pdf
in
A3-030430048230030122F00_A3-030430048230030122F00.pdf.
Es soll also "auftragsposition_3_" gelöscht werden, wobei die "3" eine variable ist und auch mal in bis 99 gehen kann. Die Dateien sind mit der Nummer sortiert (in dem Fall mit der "3").
Ich bin am ende mit meinem Kenntnissen :-(
Danke schon mal und ich hoffe das man mich verstehen kann XD
mfg Shadow
4 Antworten
Folgender Batch Code führt die von dir gewünschte Umbenennung für alle .pdf Dateien des Ordners, in dem die Batch-Datei liegt, aus.
for %%F in ("%~dp0*.pdf") do for /F "tokens=2* delims=_" %%M in ("%%~nF") do ren "%%~fF" "%%N%%~xF"
Oder hier, eventuell besser, nur für Dateien die mit "auftragsposition_" beginnen:
for %%F in ("%~dp0auftragsposition_*") do for /F "tokens=2* delims=_" %%M in ("%%~nF") do ren "%%~fF" "%%N%%~xF"
Wie entsteht denn die 3 im Dateinamen, wenn es eine Variable ist?
Ich habe 76 Dateien die alle mit auftragsposition_ beginnen. Sie sind dann durchnummeriert daher in meinem beispiel die 3.
Benutze den Advanced Renamer. Ist wesentlich praktischer als der Befehlsinterpreter.
PowerShell ist keine Option?
cd $PSScriptRoot
Get-ChildItem | Rename-Item -NewName { $_.Name -Replace('(auftragsposition_)[0-9]{1,2}\w','') }
Das Skript einmal in den Ordner legen, wo die Dateien liegen und ausführen.
Zur Erklärung:
Du rufst mit Get-ChildItem alle Dateieigenschaften innerhalb des Ordners auf und übergibt sie über die Pipe | an einen Renamer, der einen neuen Namen vergibt - pro Datei.
Er nutzt dabei den originalen Namen und Regex. 0-9 als Ziffer, 1 bis 2 mal. Anschließend der Unterstrich über \w.
Die Frage war mir irgendwie durch die Lappen gegangen...
Beim Lesen der Frage hatte ich sofort auch die Idee "underline" als Delimiter zu nutzen und die ersten beiden Namensteile zu verwerfen , damit ist auch völlig Wurst ob im 2.Token 3 oder 99 steht...