Этот пакетный файл должен сделать это за вас.
Скопируйте приведенный ниже пакетный файл в текстовый файл и сохраните его как xrename.cmd (или «что хотите. Cmd»).
Если вы просто запустите файл так:
xrename.cmd
Он будет выглядеть в текущей папке и во всех подпапках и переименовать все файлы, например: ABC12345_DEF в ABC12345.DEF (что-нибудь от "text_moretext" до «text.moretext»).
Вы также можете указать значения для «search-string», «replace-string» и «search-pattern» в командной строке.
Чтобы показать инструкции, запустите его так:
xrename.cmd /help
Примечание: я сделал командный файл только для отображения файлов, которые будут переименованы, переименование фактически не произойдет. Вы можете запустить командный файл и посмотреть, что произойдет, фактически ничего не переименовывая. После того, как вы запустите его и убедитесь, что правильные файлы будут правильно переименованы, вы можете удалить строку, как описано ниже, чтобы сделать переименование активным, а затем снова запустить пакетный файл.
Возможно, вам придется изменить значение «search-pattern» для отображения нужных вам файлов.
На ярлыках «:default1» и «:default2» вы можете редактировать значения «match-string», «search-pattern» и «replace-string» в соответствии со своими потребностями.
Этот пакетный файл имеет некоторую проверку ошибок, и он не будет работать, если в именах каких-либо папок или подпапок будет найдена «строка соответствия».
@echo off
if "%~1%~2%~3."=="." goto :default1
if /i "%~1."=="/help." goto :syntax
if "%~1."=="." goto :syntax
rem %2 can be empty to use "*matchstring*" as the "search-pattern"
rem %3 can be empty to make replacement with empty string (delete matchstring).
set "matchstring=%~1"
set "replacestring=%~3"
if "%~2."=="." goto :default2
set "searchpattern=%~2"
goto :start
:default1
set "matchstring=_"
set "replacestring=."
:default2
set "searchpattern=*%matchstring%*"
:start
set "renamecount=0"
set "errorcount=0"
echo.
for /r %%f in ("%searchpattern%") do call :work "%%~dpf" "%%~nxf"
echo.
if %renamecount% EQU 0 echo No files renamed.
if %renamecount% EQU 1 echo Renamed %renamecount% file.
if %renamecount% GEQ 2 echo Renamed %renamecount% files.
if %errorcount% EQU 1 echo %errorcount% error renaming files.
if %errorcount% GEQ 2 echo %errorcount% errors renaming files.
echo.
goto :cleanexit
:work
set matchedfilepath=%~1
set matchedfilename=%~2
rem You can't do it directly like this:
rem set "newfilename=%matchedfilename:%matchstring%=%replacestring%%"
for /F "usebackq delims=" %%g in (`echo set "newfilename=%%matchedfilename:%matchstring%=%replacestring%%%"`) do %%g
echo In path "%matchedfilepath%": Renaming "%matchedfilename%" to "%newfilename%"
rem delete the next line (goto :EOF) to make renaming active
goto :EOF
ren "%matchedfilepath%%matchedfilename%" "%newfilename%"
if %errorlevel% NEQ 0 goto :workerror
if not exist "%matchedfilepath%%newfilename%" goto :workerror
goto :workok
:workerror
echo Rename "%matchedfilepath%%matchedfilename%" failed.
set /A errorcount=errorcount+1
echo.
goto :EOF
:workok
set /A renamecount=renamecount+1
goto :EOF
:syntax
rem:syntax
echo.
echo Syntax:
echo %~nx0 ["match-string" ["search-pattern"] ["replace-string"]]
echo.
echo Search for files matching "search-pattern" in current folder and through all
echo subfolders. For each matched file, rename file by replacing "match-string"
echo with "replace-string".
echo.
echo If "replace-string" is empty or not specified, rename file by deleting
echo "match-string".
echo.
echo If "search-pattern" is empty, use "*matchstring*" as the "search-pattern".
echo.
echo If "match-string" "search-pattern" and "replace-string" are all empty or not
echo specified, then defined defaults will be used.
echo.
echo If "search-pattern" and/or "replace-string" are NOT empty then "match-string"
echo cannot be empty,
echo.
goto :EOF
:cleanexit
set "matchstring="
set "replacestring="
set "searchpattern="
set "renamecount="
set "errorcount="
set "matchedfilepath="
set "matchedfilename="
set "newfilename="
goto :EOF
После того, как вы запустили пакетный файл и уверены, что правильные файлы будут правильно переименованы, вы можете отредактировать файл, чтобы удалить описанные строки, чтобы сделать переименование активным, а затем снова запустить пакетный файл.
Для этого найдите две строки, которые выглядят так:
rem delete the next line (goto :EOF) to make renaming active
goto :EOF
Затем удалите строку с надписью «goto:EOF» (или удалите обе строки).
Не удаляйте «goto:EOF» из любого другого места в командном файле (его можно найти в нескольких местах, поэтому обязательно удалите правильный).
Если это не работает для вас, или если вы хотите, чтобы я что-то объяснил в командном файле, просто дайте мне знать.