Вы можете использовать этот код, скопированный в пакетный файл, сохраненный в каталоге, с файлами, которые нужно переименовать.
@echo off
for /F "delims=" %%I in ('dir /A-D /B *-*-* 2^>nul') do (
for /F "tokens=3 delims=- " %%J in ("%%~nI") do ren "%%I" "%%J%%~xI"
)
Я предлагаю, чтобы вставить команду ECHO слева от команды РЕН и запустить пакетный файл из в окне командной строки с текущей директории будучи директории с файлами переименовать сначала проверить, если файлы будут быть переименованными как ожидаемые вами. Если все выглядит правильно, запустите пакетный файл с кодом, который опубликован.
Внешняя ДЛЯ цикла работает DIR, чтобы получить список имен файлов только из параметров /A-D
(без каталогов) и /B
(голого формат вывода) файлов, имеющих по меньшей мере два дефиса в имени файла. "delims="
отключает по умолчанию разделение каждой выходной строки DIR на строки с использованием пробела и символа горизонтальной вкладки в качестве разделителя.
Внутренний цикл FOR обрабатывает только имя каждого файла без расширения файла с ссылкой %%~nI
в двойных кавычках. Интерес к этой задаче представляет собой лишь третья часть имени файла после двух последовательностей пробелов и тире. Это причина для "tokens=3 delims=- "
.
Команда REN переименовывает текущий файл как возвращенное DIR только третью часть и оригинальное расширение файла ссылки с %%~xI
.
Двойные кавычки должны использоваться везде, где указано имя файла, поскольку имена файлов содержат пробелы.
Чтобы понять используемые команды и как они работают, откройте окно командной строки, выполните там следующие команды и внимательно прочитайте все страницы справки, отображаемые для каждой команды.
dir /?
echo /?
for /?
ren /?
2^>nul
перенаправляет вывод сообщения об ошибке по команде DIR для обработки STDERR в случае отсутствия файла соответствия шаблона *-*-*
найдено на устройстве NUL для его подавления. Оператор перенаправления >
должен быть экранирован здесь с ^
, который должен интерпретироваться как оператор перенаправления при выполнении команды DIR, а не как неуправляемый оператор перенаправления для команды ДЛЯ. См. Также статью Microsoft Using command redirection operators.
Используйте команду 'FOR/F', чтобы проанализировать имя файла, используя дефис и пробел в качестве разделителей. – Squashman