@Echo off Pushd "X:\path\to\workdir" :: Get current date time For /f "delims=." %%A in ( 'wmic os get LocalDateTime^|findstr ^^[0-9]' ) do Set DT=%%A Set "DT=%DT:~0,8%_%DT:~8,4%" For /f "tokens=1* delims=." %%A in ( 'Dir /B/A-D "20*_*.*.txt"^|findstr "^20[0-9][0-9][01][0-9][0-3][0-9]_[0-2][0-9][0-5][0-9]\." ' ) do Echo ren "%%A.%%B" "%DT%.%%B"
Wenn die Ausgabe in Ordnung ist, entfernen Sie das Echo in der letzten Zeile.
Beispielausgabe:
> SU_1225592.cmd ren "20170704_1656.File1.txt" "20170704_1700.File1.txt" ren "20170704_1656.File2.txt" "20170704_1700.File2.txt"
Bearbeiten Um eine Datei einfach auf das Vorhandensein eines date_time-Musters zu prüfen, können
Sie diesen Batch verwenden, der nur den von findstr zurückgegebenen Errorlevel verwendet
, um bei Erfolg die Ausführung eines Befehls zu starten &&
oder ||
verschiedene Befehle fehlschlagen .
@Echo off Set "Pattern=^20[0-9][0-9][01][0-9][0-3][0-9]_[0-2][0-9][0-5][0-9]\." For %%A in ("%CD%\*") Do Echo:%%~nA|findstr "%Pattern%">NUL 2>&1 && ( Echo found Pattern in %%~fA ) || ( Echo No Pattern in %%~fA )
Beispielausgabe:
No Pattern in A:\Copy+Archive.cmd No Pattern in A:\SU_1225592.cmd found Pattern in A:\20170704_1656.File1.txt found Pattern in A:\20170704_1656.File2.txt No Pattern in A:\tp010387.BAT