|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием. |
|
CMD/BAT - [решено] Помощь с написанием Bat. Переименование файлов в папке с условием.
|
Новый участник Сообщения: 12 |
Профиль | Отправить PM | Цитировать Приветствую вас, гуру сообщество)
Прошу помощи в написании пакетного файла, если таковой возможно написать. условия задачи следующие: есть две сетевые папки "А" и "B" в папку "A" кладут n-ое кол-во файлов с расширением .mp3 в папке "B" лежит n-ое кол-во файлов с расширением .mp4 задача: по запуску пакетного файла смотреть на имена .mp3 файлов в папке "A" и переименовать файлы .mp4 в папке "B" в соответствии с именами в "A", не трогая при этом расширение. Пример: положили в папку "А" - 3 файла с именами 1.mp3, 2.mp3, 3.mp3. в папке "B" лежат файлы 10.mp4, 12.mp4, 16.mp4, 20.mp4, 25.mp4 Запускаем пакетный файл и получаем в папке "B" файлы с именами 1.mp4, 2.mp4, 3.mp4, 20.mp4, 25.mp4 Содержимое файлов mp4. абсолютно одинаковое, поэтому не важно в какой последовательности они будут переименованы. В папку "A" могут положить больше файлов чем есть в папке "B", в таком случае переименование идет пока не закончатся файлы в папке "B". |
|
Отправлено: 18:53, 12-03-2019 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y.,
@Echo Off Set "In=Z:\Soft_In" Set InE=".C.wav" ".L.wav" ".R.wav" ".SL.wav" ".SR.wav" Set OutE=" C.wav" " L.wav" " R.wav" " Ls.wav" " Rs.wav" Set /A N=1000 FOR %%f IN (%InE%) DO Set /A N+=1 &Call Set "In@%%N%%=%%~f" Set /A NN=%N% Set /A N=1000 FOR %%f IN (%OutE%) DO Set /A N+=1 &Call Set "Out@%%N%%=%%~f" For /L %%i In (1001,1,%NN%) DO Call :MyRen "%In%" "%%In@%%i%%" "%%Out@%%i%%" GoTo :Eof :MyRen FOR %%f IN ("%~1\*%~2") DO ( Set "Rep=%%~nxf~~" >nul Call Move /Y "%%f" "%~1\%%Rep:%~2~~=%~3%%" ) GoTo :Eof |
------- Отправлено: 16:46, 14-03-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать megaloman,
1 можно пояснить как оно работает, set еще понятно, но в циклах In@%%N%%=%%~f и подобное это просто brainfuck какой-то 2 а можно натравить на папку, т.е. Set "In=Z:\Soft_In" передать через контекстное меню имя папки (т.е. eac3to демуксит все дорожки в папку, я этот батник кладу в sendto, потом на папке с вавками делаю ПКМ-отправить-этотбатник). Просто при массовой обработке и перекодировании (особенно сериалов) на каждый эпизод своя папка, эпизодов 12, сезонов 3-5 и получается 36-60 раз надо править Set "In=Z:\Soft_In" |
------- Последний раз редактировалось R.i.m.s.k.y., 14-03-2019 в 16:59. Отправлено: 16:53, 14-03-2019 | #12 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать Натравить на папку не умею, а папку на батник - пожалуйста
@Echo Off If "%~1"=="" ( Echo "%~dpnx0" sterted without argument &Echo. Pause Exit /B 2 ) Set "In=%~1" If "%In:~-1%"=="\" Set "In=%In:~0,-1%" Set InE=".C.wav" ".L.wav" ".R.wav" ".SL.wav" ".SR.wav" Set OutE=" C.wav" " L.wav" " R.wav" " Ls.wav" " Rs.wav" Set /A N=1000 FOR %%f IN (%InE%) DO Set /A N+=1 &Call Set "In@%%N%%=%%~f" Set /A NN=%N% Set /A N=1000 FOR %%f IN (%OutE%) DO Set /A N+=1 &Call Set "Out@%%N%%=%%~f" For /L %%i In (1001,1,%NN%) DO Call :MyRen "%In%" "%%In@%%i%%" "%%Out@%%i%%" GoTo :Eof :MyRen FOR %%f IN ("%~1\*%~2") DO ( Set "Rep=%%~nxf~~" >nul Call Move /Y "%%f" "%~1\%%Rep:%~2~~=%~3%%" ) GoTo :Eof Как это работает
В цикл помещен список для замены ".C.wav" ".L.wav" ".R.wav" ".SL.wav" ".SR.wav" В цикле элементы списка присваиваются переменным In@10001, In@10002, In@10003 ... Аналогично Out@10001, Out@10002, Out@10003 ... В NN сохраняем максимальный номер, чтобы потом в цикле перебрать все переменные: что заменяем - на что заменяем при вызове функции переименования |
------- Отправлено: 17:24, 14-03-2019 | #13 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать R.i.m.s.k.y.,
Цитата R.i.m.s.k.y.:
Вот вариант, тянИте папку СЕРИАЛ на батник, и не надо 60 раз напрягать усталость.
Обработаются все папки @Echo Off If "%~1"=="" ( Echo "%~dpnx0" sterted without argument &Echo. Pause Exit /B 2 ) Set "In=%~1" If "%In:~-1%"=="\" Set "In=%In:~0,-1%" Set InE=".C.wav" ".L.wav" ".R.wav" ".SL.wav" ".SR.wav" ".LFE.wav" Set OutE=" C.wav" " L.wav" " R.wav" " Ls.wav" " Rs.wav" " LFE.wav" Set /A N=1000 FOR %%f IN (%InE%) DO Set /A N+=1 &Call Set "In@%%N%%=%%~f" Set /A NN=%N% Set /A N=1000 FOR %%f IN (%OutE%) DO Set /A N+=1 &Call Set "Out@%%N%%=%%~f" For /L %%i In (1001,1,%NN%) DO Call :MyRen "%In%" "%%In@%%i%%" "%%Out@%%i%%" GoTo :Eof :MyRen FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%~1\*%~2" /b /s /A:-D`) DO ( Set "Rep=%%~nxf~~" >nul Call Move /Y "%%f" "%%~dpf%%Rep:%~2~~=%~3%%" ) GoTo :Eof |
|
------- Последний раз редактировалось megaloman, 15-03-2019 в 11:37. Отправлено: 18:08, 14-03-2019 | #14 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
работает, спасибо! |
|
Отправлено: 18:10, 14-03-2019 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата dedylka:
|
|
Отправлено: 20:04, 14-03-2019 | #16 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
\сериал\сезон\эпизод\номер дорожки\*.wav Цитата megaloman:
батник кинул в sendto папку, по папке ПКМ - отправить на этот батник - отработало! только .LFE не переименовалось дописал LFE Set InE=".LFE.wav" ".C.wav" ".L.wav" ".R.wav" ".SL.wav" ".SR.wav" Set OutE=" LFE.wav" " C.wav" " L.wav" " R.wav" " Ls.wav" " Rs.wav" можно я этот скрипт запощу на рутракер в тему по обработке звука? |
||
------- Отправлено: 09:59, 15-03-2019 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
|
|
Отправлено: 10:23, 15-03-2019 | #18 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 10:34, 15-03-2019 | #19 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Если давать ссылку на решение то оно должно быть полным Извините за мою невнимательность и спасибо Вам за решение! |
|
------- Отправлено: 10:43, 15-03-2019 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Помощь с написанием Bat. Перемещение и удаление файлов и папок старше N дней. | Stanley5 | Скриптовые языки администрирования Windows | 20 | 06-03-2019 05:39 | |
CMD/BAT - [решено] Переименование с условием bat | alado | Скриптовые языки администрирования Windows | 8 | 14-07-2017 19:27 | |
CMD/BAT - Архивирование, переименование и перемещение файлов с помощью BAT-файла | kirillius | Скриптовые языки администрирования Windows | 7 | 13-05-2016 12:57 | |
CMD/BAT - Переименование файлов в папке по имени папки_счётчик | Sergo_zloy | Скриптовые языки администрирования Windows | 13 | 17-01-2014 16:58 | |
CMD/BAT - Переименование группы файлов, используя команды bat | SergMarkow | Скриптовые языки администрирования Windows | 0 | 20-01-2013 23:23 |
|