Ich muss mehrere Dateien in einem Ordner umbenennen. Dateinamen sind entweder 6 Ziffern lang oder 9 Ziffern lang und ich muss alle Dateinamen mit führenden Nullen auffüllen, um sie insgesamt 16 Ziffern lang zu machen.Dateien in einem Ordner mit linken Pad-Nullen umbenennen
Zum Beispiel, wenn der Dateiname 123456.jpg
dann sollte es zu 000000000.jpg
umbenannt werden, und wenn es 123456789.jpg
ist, dann sollte es zu 000000.jpg
umbenannt werden.
Die maximale Länge der Ziffern sollte immer 16 Ziffern betragen.
Es können 100 oder mehr Dateien im Ordner vorhanden sein.
Ich habe versucht, so etwas, das ich weiß, ist nicht der Code für diese Aufgabe erforderlich. Aber ich begann mit diesem und brauche Hilfe, um voranzukommen.
@echo off
setlocal enableextensions enabledelayedexpansion
rem iterate over all JPG files:
for %%f in (C:\Documents\Pictures\pic\*.jpg) do (
rem store file name without extension
set FileName=%%~nf
rem Add leading zeroes:
set FileName=00000000000!FileName!
rem Add extension again
set FileName=!FileName!%%~xf
rem Rename the file
rename "%%f" "!FileName!"
)
Ich würde ein Batch-Skript bevorzugen. Wenn das nicht möglich ist, wird auch ein VB-Skript akzeptiert.
Basierend auf Stephan Empfehlung, habe ich den Code wie folgt aktualisiert. Dieser Code weist dem Dateinamen 123456.jpg
jedoch keine Nullen voran.
Ich möchte hier hinzufügen, dass mein Wissen über Batch-Skript-Codierung sehr begrenzt ist. Der Code, den ich versuche, ist nur der erste Versuch, aber was ich will und wurde auch in der Frage erwähnt, dass Skript Prepad Nullen unabhängig von der Dateiname ist 6 Ziffern lang oder 9 Ziffern lang und machen es insgesamt von 16 Ziffern lang. Ich denke, selbst wenn der Code, den ich versuche, zu funktionieren beginnt, würde ich immer noch nicht das bekommen, wonach ich suche.
Wenn ich diesen Code ausführen, dann tut es nichts.
@echo off
setlocal enableextensions enabledelayedexpansion
rem iterate over all JPG files:
for %%f in (C:\Documents\Pictures\pic\*.jpg) do (
rem store file name without extension
set FileName=%%~nf
rem Add leading zeroes:
set FileName=0000000000!FileName!
set FileName=!FileName:~-16!
rem Rename the file
rename "%%f" "!FileName!"
set FileName=!FileName!%%~xf
rem Rename the file
rename "%%f" "!FileName!"
)
Aktualisiert Code, die 6 Ziffern langen Dateinamen lange zu 16 Ziffern konvertiert:
@echo off
setlocal enableextensions enabledelayedexpansion
rem iterate over all JPG files:
for %%f in (C:\Documents\Pictures\pic\*.jpg) do (
rem store file name without extension
set FileName=%%~nf
rem Add leading zeroes:
set FileName=000000000!FileName!
set FileName=!FileName:~-16!
set FileName=!FileName!%%~xf
rem Rename the file
rename "%%f" "!FileName!"
)
Sie fügen die Nullen hinzu, aber Sie schneiden nicht für 16 Zeichen danach. 'set FileName = output_! Dateiname: ~ -16! %% ~ xf' sollte tun (anstelle der letzten' set' Zeile). – Stephan
Die Beschreibung und Ihr Code stimmen nicht überein! Sie erwähnen nicht das Präfix 'output_', das Ihr Code zu behalten versucht; also bitte update deinen post entsprechend ... – aschipfl
@aschipfl Ich habe gerade meinen Code aktualisiert. Entschuldigung dafür – adit