2016-11-22 15 views
1

У меня есть этот вид файлов именования системыBatch для удаления текста до и после специальных символов в именах файлов

CR - План - Grundriss_RO_STA_MA_C7_TS_0001_01_F - План Nord.pdf

, и я хотел бы иметь .bat файл, который удаляет детали до и после и изменения имен файлов в

Grundriss_RO_STA_MA_C7_TS_0001_01_F.pdf

Детали до и после не всегда имеют одинаковую длину!

Буду очень благодарен, если вы могли бы помочь! Большое спасибо.

+2

Используйте команду 'FOR/F', чтобы проанализировать имя файла, используя дефис и пробел в качестве разделителей. – Squashman

ответ

2

Вы можете использовать этот код, скопированный в пакетный файл, сохраненный в каталоге, с файлами, которые нужно переименовать.

@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.

 Смежные вопросы

  • Нет связанных вопросов^_^