![]() |
Сложное пакетное переимеонование
Прошу помочь!
Есть директория, в ней около ста папок с именами, в которых присутствуют либо "EUR", либо - "MULTIX" (где X - цифры от 1 до 9), либо - "USA". Внутри папок файлы с расширением "cso". Теперь сама просьба: - необходимо переименовать эти файлы с расширением "cso" согласно имени папки, которое необходимо обрезать до символов "EUR" (или "MULTIX" или "USA") включительно. Одновременно убрав из имени файла знаки подчеркивания. Например, имеем: Директорию "2007" с папкой "Burnout_Dominator_EUR_PSP-pSyPSP" и файлом "psy-boe.cso". Хотим получить имя файла хотя бы такого вида: Burnout Dominator EUR.cso Если возможно, то еще пару пожеланий: 1) Название региона взять в скобки - Burnout Dominator (EUR).cso 2) В каждой папке создать файл - "original_name.txt", в который поместить оригинальное имя дампа - "psy-boe.cso". Прим. Пересобираю коллекцию. Папок очеееень много. Заранее благодарен. |
Aleksander.Ruban@fb,
Попробуй: Код:
@echo off Код:
for %%i in ("%~2\*.sco") do ( |
Цитата:
Но не понял, как заставить работать скрипт, если имя файла неизвестно. В таком варианте: Цитата:
Еще вопрос в первом варианте скобка ")" в конце нужна? Прим. Сейчас узрел ошибки cso-sco. Подправлю отпишусь. |
Цитата:
|
В таком варианте работает.
Цитата:
Например, вместо "su-frantix.cso" в orig_name.txt записалось "Frantix.(EUR).cso". Кстати, сам файл переименован в "Frantix.(MULTI).cso". Точка перед (MULTI) и (EUR) лишняя, да и почему нессотвествие (MULTI) и (EUR)? В остальных случаях в orig_name.txt записались исходные (правильные, не переименованные) имена. Проверил несколько раз - всегда один из файлов неверно записывается в orig_name.txt. Проблема в том, что непонятно в какой именно... Переименование происходит не по алфавиту. И еще скрипт в конце (перед закрытием) заканчивается выводом сообщения "file not found" |
Я не смог повторить, у меня все нормально. Сделайте листинг тестовой директории:
Код:
dir /b /s c:\2007\*.cso > file.txt |
Удалено. Дубль сваял.
|
Листинг
До переименования и после Не переименовался файл в дир-ии Namco_Museum_Battle_Collection_Pal_PSP-eLk - Pal записан нестандартно (можно добавить). В имени Bomberman.(EUR).cso перед (EUR) затесалась точка. В папке "c:\2007\Frantix.EUR.MULTI5.PSP-SUSHi\Frantix.(MULTI).cso" в файл "orig_name.txt" вместо "su-frantix.cso" записалось "Frantix.(EUR).cso". Это тестовый набор папок. Я пробовал еще на одном - тоже в один из файлов "orig_name.txt" вместо первоначального имени записалось переименованное. Вариант 2 и после - В папках "Cars_Race_o_Rama_EUR_PSP-BAHAMUT" и "Elementalmonster_TD_Portable_EUR_MULTi5_PSN_PSP-NRP" в файлах "orig_name.txt" вместо "b-carsrorepsp.cso" и "nrp-emtdpe.cso" записалось соотвественно "Cars Race o Rama (EUR).cso" и "Elementalmonster TD Portable (EUR).cso". Может не успевает скрипт, задержка нужна? |
Aleksander.Ruban@fb,
Разобрался. Директории, в названиях которых есть и EUR и MULTI и USA одновременно, обрабатываются несколько раз, из-за этого файлы переименовываются тоже несколько раз. Измени последний for Код:
for %%i in ("%~2\*.cso") do ( ЗЫЫ. "file not found" если есть директория, в названии которой отсутствуют EUR, MULTI или USA. |
Спасибо. Вы гений! Все сработало прекрасно: 1050 каталогов (460 гигов) переименовались в течении 1 минуты.
|
Время: 19:04. |
Время: 19:04.
© OSzone.net 2001-