2015-08-12 3 views
1

У меня есть список из 15 000 документов, где мне нужно удалить определенный фрагмент текста из имени.Как переименовать файлы, удалив все символы между определенными значениями

Имя структура всегда: [xxx]_(xxx)_xxx.extension

Я пытаюсь удалить (xxx)_ часть файла. Длина xxx является переменной.

Я только нашел способы заменить определенные фрагменты текста или удалить фиксированные фрагменты текста. Любая помощь или рекомендации приветствуются.

+0

Являются ли скобки ('[]' и '()') частью имени файла? – dbenham

+0

@dbenham, да, они есть. Вот пример: '[124786] _ (12424) _Имя файла file.txt' – CustomX

ответ

2

Я хотел бы использовать JREN.BAT - a regular expression renaming utility. JREN.BAT - чистый скрипт (гибридный JScript/пакет), который запускается изначально на любом компьютере Windows с XP.

Если у вас есть JREN.BAT в папке, которая находится в пределах вашего окружения PATH, то все, что вам нужно, это следующая команда из командной строки:

jren "^(\[.*?\]_)\(.*?\)_" "$1" 

Команда ищет имена файлов в текущем каталоге, начинайте с [*]_(*)_ и удалите часть (*)_.

Используйте команду CALL JREN, если вы поместите команду в пакетный скрипт.

Вы можете добавить опцию /P, чтобы указать путь, отличный от текущего каталога, и параметр /S для итерации всех подкаталогов.

Вы можете использовать jren /??, чтобы получить доступ к обширной документации. Нажмите <Enter>, чтобы продвинуть помощь по одной строке за раз, или <space> для продвижения одной экранной страницы за раз. Или используйте jren /?, чтобы получить всю помощь, сбрасываемую на экран немедленно.

+0

EDIT - я забыл избежать метасимволов '[]'. – dbenham

+0

как вы устанавливаете JREN.bat? Добавляю ли я весь код из первого сообщения в вашу ссылку в текстовый файл, а затем я использую командную строку (используя компакт-диск для входа в папку), а затем запустите эту строку? – CustomX

+0

@CustomX - перейдите по ссылке и скопируйте код в файл с именем JREN.BAT. Я рекомендую поместить скрипт в файл, указанный в вашем PATH - у меня есть папка с именем C: \ UTILS. Но вам не обязательно это делать. Если он находится в вашем текущем каталоге, вы можете просто использовать JREN. Но если это не в вашем текущем каталоге, а не в вашем PATH, вам нужно будет указать путь к JREN.BAT, когда вы его вызываете. – dbenham

2

, что работа для for:

for /f "tokens=1,2,* delims=_" %%a in ('dir /b "[*]_(*)_*.extension"') do @echo %%a_%%c [removed "%%b"] 

Как это работает:

он разбирает ваши имена файлов на три части, по ограничителю (_ здесь): firstpart_secondpart_thirdpart, то повторная сборка его монтаже первая и третья части вместе.

Если вы хотите переименовать их (например), а не только echo ING, вы можете сделать: ren "%%a_%%b_%%c" "%%a_%%c"

+0

Что произойдет, если'_ 'используется внутри третьей части? Поэтому я просто добавляю этот код в .bat-файл и вставляю правильный каталог? – CustomX

+0

@CustomX - 'tokens = 1,2, *' обрабатывает это - он не разбивается на '_' в третьем токене, поэтому третий токен завершен. – dbenham

+0

Это ошибочно переименует файлы, которые не соответствуют шаблону. Лучше использовать 'dir/b [*] _ (*) ​​_ *. Extension' – dbenham

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