Observação - Nenhum deste código é testado, portanto, pode haver alguns bugs. Mas os conceitos estão todos corretos
Se nenhum dos seus arquivos tiver mais de um _
, então:
@echo off
for /f "eol=_ delims=_ tokens=1,2" %%A in (
'dir /b /a-d *_????????^|findstr /rx "[^._][^._]*_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"'
) do ((
echo %%B
type "%%A_%%B"
) >"%%A_%%B.new" & move /y "%%A_%%B.new" "%%A_%%B" >nul )
Se houver mais de um _
, então:
@echo off
setlocal
for /f "eol=_ delims=_ tokens=1,2" %%F in (
'dir /b /a-d *_????????^|findstr /rx "[^.][^.]*_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"'
) do call :processFile "%%F"
exit /b
:processFile
set "file=%~1"
for %%A in ("%file:_=" "%") do set "dt=%%A"
>"%~1.new" (
echo %dt%
type %1
)
move /y "%~1.new" %1 >nul
exit /b
Ou, se você receber uma cópia do repl.bat , simplificará:
@echo off
for /f "eol=: delims=: tokens=1,2" %%A in (
'dir /b /a-d *_????????^|repl "^[^.]+_(\d{8})$" "$&:$1" a'
) do ((
echo %%B
type "%%A"
) >"%%A.new" & move /y "%%A.new" "%%A" >nul )