Erstellen eines DOS-Skripts zum Umbenennen von Dateien
Ursprüngliche Dateinamen:
FIL120_000112_DDMMYY ==> MYNAME_TLD_EXT_YYMMDD
Ich muss den ursprünglichen Dateinamen letzten Teil (DDMMYY) nehmen und in YYMMDD umwandeln.
Im Folgenden finden Sie ein Windows-Batch-Skript, das genau das tut, was Sie in Ihrer Frage aufführen. Wenn Sie eine Erklärung zu den Funktionen dieses Skripts benötigen, lassen Sie es mich wissen und ich werde der Logik Kommentare hinzufügen, um genau zu sagen, ob Sie es sind nicht sicher basierend auf dem, was ich drin habe.
Sie müssen SET SourceDir=
den vollständigen Pfad der Speicherorte ändern, an denen sich die Dateien befinden, die Sie umbenennen müssen.
Ich habe die .txt
Dateierweiterung dieser Dateien in meinem Beispiel verwendet, aber Sie können diese im folgenden DIR /B "%SourceDir%\*_*_*.txt"
Teil der Logik in eine andere Erweiterung ändern. Ich helfe dabei, wenn Sie Probleme haben, lassen Sie es mich wissen.
Wenn Ihre Dateien überhaupt keine Erweiterungen haben, lassen Sie es mich wissen, und ich füge dieser Antwort ein weiteres Beispiel hinzu, ohne dass es eine Dateierweiterung gibt, die dies für Sie abschließen wird.
Bitte beachten Sie, dass ich getestet und bestätigt habe, dass dies mit den obigen Beispielen und Erläuterungen in Ihrer obigen Frage genau wie erwartet funktioniert hat.
Windows-Batch-Skript-Beispiele
Dateiname Analysieren und Umbenennen von Dateien mit Erweiterungen
@ECHO ON SET SourceDir=C:\PathForFilesToRename FOR /F "TOKENS=*" %%A IN ('"DIR /B "%SourceDir%\*_*_*.txt""') DO ( CALL :RenameLogic "%SourceDir%\%%~NXA" "%%~NA" "%%~XA" ) GOTO EOF :RenameLogic SET FnameNoExt=%~2 FOR /F "TOKENS=1-3 DELIMS=_" %%R IN ("%FnameNoExt%") DO (SET FnamePart1=%%R_%%S) SET FnameDtPart=%FnameNoExt:~-6% SET DD=%FnameDtPart:~0,2% SET MM=%FnameDtPart:~2,2% SET YY=%FnameDtPart:~-2% SET Extension=%~3 REN "%~1" "%FnamePart1%_%YY%%MM%%DD%%Extension%" GOTO EOF
Dateiname Analysieren und Umbenennen von Dateien Keine Erweiterungen
@ECHO ON SET SourceDir=C:\PathForFilesToRename FOR /F "TOKENS=*" %%A IN ('"DIR /B "%SourceDir%\*_*_*""') DO ( CALL :RenameLogic "%SourceDir%\%%~NXA" "%%~NA" ) GOTO EOF :RenameLogic SET FnameNoExt=%~2 FOR /F "TOKENS=1-3 DELIMS=_" %%R IN ("%FnameNoExt%") DO (SET FnamePart1=%%R_%%S) SET FnameDtPart=%FnameNoExt:~-6% SET DD=%FnameDtPart:~0,2% SET MM=%FnameDtPart:~2,2% SET YY=%FnameDtPart:~-2% REN "%~1" "%FnamePart1%_%YY%%MM%%DD%" GOTO EOF
Dateiname Parse- und Umbenennungsdateien Keine Erweiterungen mit statischem Umbenennungsteil
( Wichtiger Hinweis: Wenn zwei Dateien den gleichen YYMMDD-Namen haben, wenn sie mit dem statischen Namen umbenannt werden, ist dies ein Problem. Solange jedoch keine zwei Dateien im selben Ordner den gleichen YYMMDD-Namen haben, sollte dies auch ohne funktionieren Wenn es jedoch eine Datei gibt, die bereits mit diesem statischen Namen umbenannt wurde und die nächste dann versucht, mit demselben statischen Namen umzubenennen, ist dies ein Problem.)
Variable Anmerkung: Im Folgenden können SET StaticFnamePart=
Sie festlegen, was für den statischen Umbenennungsbereich der Datei vorwärts festgelegt werden soll. Dies wird verwendet, um diesen Teil der umbenannten Datei einzufügen.
@ECHO ON SET SourceDir=C:\PathForFilesToRename SET StaticFnamePart=MYNAME_TLD_EXT FOR /F "TOKENS=*" %%A IN ('"DIR /B "%SourceDir%\*_*_*""') DO ( CALL :RenameLogic "%SourceDir%\%%~NXA" "%%~NA" ) GOTO EOF :RenameLogic SET FnameNoExt=%~2 FOR /F "TOKENS=1-3 DELIMS=_" %%R IN ("%FnameNoExt%") DO (SET FnamePart1=%%R_%%S) SET FnameDtPart=%FnameNoExt:~-6% SET DD=%FnameDtPart:~0,2% SET MM=%FnameDtPart:~2,2% SET YY=%FnameDtPart:~-2% REN "%~1" "%StaticFnamePart%_%YY%%MM%%DD%" GOTO EOF