Batch die Dateinamen ändert?

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"
Erzesel  29.05.2019, 21:37

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...

1
timlg07  30.05.2019, 12:37
@Erzesel

Yes, dann konnt ich auch mal wieder ne Batch-Frage beantworten 😅

0

Wie entsteht denn die 3 im Dateinamen, wenn es eine Variable ist?

Shadow0071914 
Fragesteller
 28.05.2019, 10:29

Ich habe 76 Dateien die alle mit auftragsposition_ beginnen. Sie sind dann durchnummeriert daher in meinem beispiel die 3.

0

Benutze den Advanced Renamer. Ist wesentlich praktischer als der Befehlsinterpreter.

PowerShell ist keine Option?

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting
Shadow0071914 
Fragesteller
 28.05.2019, 10:23

Mir egal. Wenn das geht auch da drin :-)

1
Dultus, UserMod Light   28.05.2019, 10:59
@Shadow0071914
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.

2