|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Сложное пакетное переимеонование |
|
CMD/BAT - [решено] Сложное пакетное переимеонование
|
Новый участник Сообщения: 10 |
Прошу помочь!
Есть директория, в ней около ста папок с именами, в которых присутствуют либо "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". Прим. Пересобираю коллекцию. Папок очеееень много. Заранее благодарен. |
|
Отправлено: 08:07, 25-08-2012 |
Ветеран Сообщения: 1758
|
Aleksander.Ruban@fb,
Попробуй: @echo off setlocal pushd "C:\2007" || goto:eof for %%i in (EUR MULTI USA) do ( for /f "tokens=*" %%j in ('dir /b /ad *%%i*') do call:1 %%i "%%j" ) popd goto:eof :1 set "name=%~2" set "name=%name:EUR=?%" set "name=%name:MULTI=?%" set "name=%name:USA=?%" for /f "tokens=1 delims=?" %%i in ("%name%") do set "name=%%i(%1)" ren "%~2\psy-boe.cso" "%name:_= %.sco" |
Последний раз редактировалось Foreigner, 25-08-2012 в 09:57. Отправлено: 09:39, 25-08-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 10
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Foreigner:
Но не понял, как заставить работать скрипт, если имя файла неизвестно. В таком варианте: Цитата Foreigner:
Еще вопрос в первом варианте скобка ")" в конце нужна? Прим. Сейчас узрел ошибки cso-sco. Подправлю отпишусь. |
||
Последний раз редактировалось Aleksander.Ruban@fb, 25-08-2012 в 12:03. Причина: Уточнение Отправлено: 12:01, 25-08-2012 | #3 |
Ветеран Сообщения: 1758
|
Цитата Aleksander.Ruban@fb:
|
|
Отправлено: 12:05, 25-08-2012 | #4 |
Новый участник Сообщения: 10
|
Профиль | Сайт | Отправить PM | Цитировать В таком варианте работает.
Цитата:
Например, вместо "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" |
||
Отправлено: 12:23, 25-08-2012 | #5 |
Ветеран Сообщения: 1758
|
|
Отправлено: 13:06, 25-08-2012 | #6 |
Новый участник Сообщения: 10
|
Профиль | Сайт | Отправить PM | Цитировать Удалено. Дубль сваял.
|
Последний раз редактировалось Aleksander.Ruban@fb, 25-08-2012 в 13:44. Причина: Уточнение Отправлено: 13:27, 25-08-2012 | #7 |
Новый участник Сообщения: 10
|
Профиль | Сайт | Отправить PM | Цитировать Листинг
До переименования и после Не переименовался файл в дир-ии 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". Может не успевает скрипт, задержка нужна? |
Отправлено: 13:52, 25-08-2012 | #8 |
Ветеран Сообщения: 1758
|
Aleksander.Ruban@fb,
Разобрался. Директории, в названиях которых есть и EUR и MULTI и USA одновременно, обрабатываются несколько раз, из-за этого файлы переименовываются тоже несколько раз. Измени последний for for %%i in ("%~2\*.cso") do ( if not exist "%~2\orig_name.txt" ( ren "%%i" "%name:_= %.cso" 1>"%~2\orig_name.txt" echo %%~nxi )) ЗЫЫ. "file not found" если есть директория, в названии которой отсутствуют EUR, MULTI или USA. |
Последний раз редактировалось Foreigner, 25-08-2012 в 14:20. Отправлено: 14:14, 25-08-2012 | #9 |
Новый участник Сообщения: 10
|
Профиль | Сайт | Отправить PM | Цитировать Спасибо. Вы гений! Все сработало прекрасно: 1050 каталогов (460 гигов) переименовались в течении 1 минуты.
|
Отправлено: 20:11, 25-08-2012 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как сделать сложное условие в операторе if | madmax24 | Скриптовые языки администрирования Windows | 17 | 12-02-2015 15:43 | |
DNS/DHCP - Помогите !!! Сложное построение сети в том числе под управлением Win 7 | lamajor90x | Сетевые технологии | 2 | 24-11-2011 20:25 | |
Пакетное преобразование файлов | PCLAlex | AutoIt | 1 | 21-06-2011 10:09 | |
PowerShell - Сложное преобразование xls или csv файла в текстовый | tarasov.evgeny | Скриптовые языки администрирования Windows | 1 | 29-05-2011 15:04 | |
2003/XP/2000 - Excel | Сложное условие (одно или несколько) или макрос | ZeLiK | Microsoft Office (Word, Excel, Outlook и т.д.) | 1 | 17-02-2011 12:07 |
|