Ich habe ein Skript, das Dateien umbenennt, indem dem aktuellen Dateinamen ein Zeitstempel als Präfix hinzugefügt wird. Eine Datei mit einem Zeitstempel sieht folgendermaßen aus:
20170407_1030.file1.txt
Ich führe dieses Skript in einem Ordner aus, nachdem ich mit einigen Dateien gearbeitet habe. Das Problem ist, dass eine Datei, der bereits ein Zeitstempel vorangestellt wurde, beim nächsten Ausführen des Skripts dem Dateinamen einen weiteren Zeitstempel voranstellt. Wenn der Name einer Datei bereits einen Zeitstempel enthält, möchte ich ihn durch einen aktualisierten Zeitstempel ersetzen .
Um dies zu erreichen, versuche ich, Dateinamen zu identifizieren, die bereits einen Zeitstempel enthalten, und diesen gegebenenfalls durch einen aktualisierten Zeitstempel zu ersetzen.
Mein Skript dazu sieht derzeit so aus:
setlocal enabledelayedexpansion
for /f "delims=|" %%F in ('dir /b %cd%\*.*') do (
set "MDate=%%~tF"
set "Patern=*_*."
set "TimeStamp=!MDate:~6,4!!MDate:~0,2!!MDate:~3,2!"
ren "%%~nF%%~xF" "!TimeStamp!-%%~nF%%~xF"
)
exit
Bearbeiten: Entschuldigung, dass Sie keine weiteren Details angegeben haben. Ich habe einige Nachforschungen angestellt und kann keine Möglichkeit finden, die Masken in der angegebenen Stichprobe abzugleichen. Ich weiß, wie man vordefinierte Muster ersetzt oder wie man Masken wie passt ren *.png *.jpg
.
Antworten:
Wenn die Ausgabe in Ordnung aussieht, entfernen Sie das Echo in der letzten Zeile.
Beispielausgabe:
Bearbeiten Um eine Datei nur auf das Vorhandensein eines date_time-Musters zu prüfen, können
Sie diesen Stapel verwenden, der nur die von findstr zurückgegebene Fehlerstufe verwendet
, um einen Erfolg bedingt auszuführen
&&
oder||
andere Befehle nicht auszuführen.Beispielausgabe:
quelle