@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"
Если вывод выглядит нормально, удалите эхо в последней строке.
Образец вывода:
> SU_1225592.cmd ren "20170704_1656.File1.txt" "20170704_1700.File1.txt" ren "20170704_1656.File2.txt" "20170704_1700.File2.txt"
Редактировать Чтобы просто проверить файл на наличие шаблона date_time,
вы можете использовать этот пакет, который использует только уровень ошибки, возвращаемый из findstr,
для условного выполнения при успешном выполнении &&
или сбое ||
различных команд.
@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 )
Образец вывода:
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