@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"
Se a saída parece OK, remova o eco na última linha.
Exemplo de saída:
> SU_1225592.cmd
ren "20170704_1656.File1.txt" "20170704_1700.File1.txt"
ren "20170704_1656.File2.txt" "20170704_1700.File2.txt"
Editar Para verificar apenas um arquivo para a existência de um padrão date_time
você pode usar esse lote que usa apenas o errorlevel retornado pela findstr
para executar condicionalmente no sucesso &&
ou falha ||
comandos diferentes.
@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
)
Exemplo de saída:
No Pattern in A:\Copy+Archive.cmd
No Pattern in A:\SU_1225592.cmd
found Pattern in A:170704_1656.File1.txt
found Pattern in A:170704_1656.File2.txt
No Pattern in A:\tp010387.BAT