Примечание. Ни один из этих кодов не тестировался, поэтому могут быть некоторые ошибки. Но понятия верны
Если ни один из ваших файлов не содержит более одного _
, то:
@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 )
Если может быть более одного _
, то:
@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
Или, если вы получите копию repl.bat, она упрощается до:
@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 )