Я бы выполнил такую операцию многократного переименования файлов, используя условно-бесплатное программное обеспечение Total Commander со встроенным инструментом многократного переименования, который имеет простой в использовании графический интерфейс пользователя для таких задач, позволяющий просматривать новые именафайлы перед выполнением операции переименования.Эту операцию переименования файлов можно выполнить, когда Total Commander практически завершен, используя всего несколько щелчков мышью, просто наберите C1234-
на клавиатуре.А Total Commander поддерживает даже отмену, если по какой-либо причине операция переименования не удалась.
Допустим, C1234-
в новом имени файла - это фиксированная последовательность символов, а 1
и 5
- увеличенное числопо одному на каждый переименованный файл.
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "FileNumber=1"
for /F "eol=| delims=" %%I in ('dir BL_????????_abc.wav /A-D-H /B /ON 2^>nul') do (
move /Y "%%I" "BL_C1234-!FileNumber!_abc%%~xI" >nul
set /A FileNumber+=1
)
endlocal
Это решение работает для примера.
Но что касается строки слева до первого подчеркивания и строки справа до второго подчеркивания, зависит от имени файла к файлуname?
В этом случае следующий пакетный файл может быть правильным решением:
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "FileNumber=1"
for /F "eol=| delims=" %%I in ('dir *_????????_*.wav /A-D-H /B /ON 2^>nul') do (
for /F "eol=| tokens=1,2* delims=_" %%A in ("%%~nxI") do (
move /Y "%%I" "%%A_C1234-!FileNumber!_%%C" >nul
)
set /A FileNumber+=1
)
endlocal
Команда MOVE с параметром /Y
используется вместо команды REN , чтобы переименовать файл, даже если файл с таким именем уже существует.Total Commander сообщит пользователю о такой проблеме при переименовании файлов с другими файлами с уже существующим новым именем.
Чтобы понять используемые команды и их работу, откройте окно командной строки и выполните там следующие команды:и внимательно прочитайте все справочные страницы, отображаемые для каждой команды.
dir /?
echo /?
endlocal /?
for /?
move /?
set /?
setlocal /?
Прочтите статью Microsoft о Использование операторов перенаправления команд для объяснения 2>nul
.Оператор перенаправления >
должен быть экранирован с помощью символа вставки ^
в командной строке FOR , чтобы интерпретироваться как литеральный символ, когда интерпретатор команд Windows обрабатывает эту командную строку перед выполнением команды FOR , котораявыполняет встроенную командную строку dir
в отдельном командном процессе, запущенном в фоновом режиме.