Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Пакетное переименование файлов (синхронизирование имён одного расширения с другим)

Ответить
Настройки темы
CMD/BAT - [решено] Пакетное переименование файлов (синхронизирование имён одного расширения с другим)

Пользователь


Сообщения: 50
Благодарности: 3

Профиль | Отправить PM | Цитировать


Изменения
Автор: 19w85
Дата: 03-03-2011
Имеется произвольный список файлов *.mkv
А также список допустим *.ac3

абв 1.mkv
абц2.mkv
...

test 1.ac3
test 34.ac3
...

Требуется 1-ый найденный ac3 переименовать, взяв имя из 1-ого найденного mkv, порядок сортировки обычный, соотвественно, должно стать:
test 1.ac3 ->абв 1.ac3
test 34.ac3->абц2.ac3

Дальше извлечения из mkv-файлов списка имен без расширения в txt-файл уйти мне не удалось:
Код: Выделить весь код
For %%I In ("*.mkv") Do (echo %%~nI>>nameslist.txt)
Цикл, который пробежится по всем строчкам nameslist.txt я сделать могу
Цикл, который переименует каждый файл *.ac3 в какое-то конкретное имя, например, со счетчиком я тоже могу.
А не могу я совместить эти 2 цикла, чтобы для 1ого файла ac3 сопоставить 1ую строчку из nameslist.txt, для 2ого - 2ую строчку и т.д.

Вот тут (http://forum.oszone.net/thread-184481.html) похожая задача решалась, но более простая, т.к. исходное имя переименовываемого файла там конкретное, а не призвольное-полностью неизвестное как в моём случае.

Отправлено: 21:50, 03-03-2011

 

Ветеран


Сообщения: 1001
Благодарности: 226

Профиль | Отправить PM | Цитировать


Количество файлов *.mkv и *.ac3 одинаковое?
Они все лежат в одной папке?

Отправлено: 08:43, 04-03-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Пользователь


Сообщения: 50
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Ivan Bardeen:
Количество файлов *.mkv и *.ac3 одинаковое?
Они все лежат в одной папке? »
Да, в одной папке. Желательно учесть ситуацию при неодинаковом количестве файлов.

Отправлено: 08:50, 04-03-2011 | #3


Ветеран


Сообщения: 1001
Благодарности: 226

Профиль | Отправить PM | Цитировать


Цитата 19w85:
Желательно учесть ситуацию при неодинаковом количестве файлов. »
Как поступать в таком случае?

Отправлено: 09:35, 04-03-2011 | #4


Пользователь


Сообщения: 50
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Ivan Bardeen:
Как поступать в таком случае? »
Да я честно говоря не вижу тут каких-либо альтернатив, чтобы было из чего выбирать:
1-ой вариант (с условными именами):
a.mkv, b.mkv, c.mkv
1.ac3, 2.ac3
3-его ac3-файла нету, переименовывать нечего - как тут по другому можно поступить, кроме пропуска?

2-ой вариант:
a.mkv, b.mkv
1.ac3, 2.ac3, 3.ac3
Имя для переименования 3его ac3-файла взять неоткуда, т.к. нет mkv - также кроме как пропустить тут делать ведь нечего...

Отправлено: 09:43, 04-03-2011 | #5


Ветеран


Сообщения: 1001
Благодарности: 226

Профиль | Отправить PM | Цитировать


Цитата 19w85:
Требуется 1-ый найденный ac3 переименовать, взяв имя из 1-ого найденного mkv, »
И еще вопрос, 1-ый найденный - это, как я понимаю сортировка по алфавиту?

Отправлено: 09:47, 04-03-2011 | #6


Пользователь


Сообщения: 50
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Ivan Bardeen:
И еще вопрос, 1-ый найденный - это, как я понимаю сортировка по алфавиту? »
Да

Отправлено: 09:48, 04-03-2011 | #7


Пользователь


Сообщения: 50
Благодарности: 3

Профиль | Отправить PM | Цитировать


Вроде бы поставленная задача средней сложности...неужели никто ничего не подскажет?

Отправлено: 07:55, 09-03-2011 | #8


Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Видно после праздника голова не работает. Получилась такая ересь.
Но самое смешное - у меня работает. Если у Вас не будет - не удивлюсь.
Код: Выделить весь код
@echo off

setlocal enabledelayedexpansion

set "SFileName=z:\sandbox\003\*.ac3"
set "DFileName=z:\sandbox\003\*.mkv"
set n=0

for /f "delims=" %%a in ('dir /a-d/b/oen "%SFileName%"') do (
   set /a n+=1
   set "arr=!arr!^ren "%%a" "^>!n!"/"
)

set n2=0

for /f "delims=" %%i in ('dir /a-d/b/oen "%DFileName%"') do (
   set /a n2+=1
   if !n2! LEQ n call set arr=%%arr:^>!n2!=%%~ni.ac3%%
)

set arr=%arr:/=^&%
2>nul (%arr:~,-1%)

Последний раз редактировалось SendMessage, 09-03-2011 в 10:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:40, 09-03-2011 | #9


Пользователь


Сообщения: 50
Благодарности: 3

Профиль | Отправить PM | Цитировать


SendMessage,
Отлично, спасибо! У меня вроде тоже работает (естественно, в начало командника добавил cd /D "%~dp0" и удалил из кода z:\sandbox\003\ чтобы полностью соответствовало поставленной задаче)

А не могли бы рассказать принцип действия? И особенно прокомментировать, что именно происходит в выделенных частях в этих строках:
Код: Выделить весь код
set "arr=!arr!^ren "%%a" "^>!n!"/"
if !n2! LEQ n call set arr=%%arr:^>!n2!=%%~ni.ac3%%
set arr=%arr:/=^&%
2>nul (%arr:~,-1%)

Отправлено: 11:04, 09-03-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Пакетное переименование файлов (синхронизирование имён одного расширения с другим)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - [решено] Подключение сетевого диска под другим именем khs Microsoft Windows 2000/XP 6 03-10-2019 12:53
CMD/BAT - [решено] Пакетное переименование файлов ArsenBespalov Скриптовые языки администрирования Windows 9 11-08-2016 03:56
[решено] Пакетное переименование ярлыков SimSim Хочу все знать 9 24-10-2012 10:44
CMD/BAT - [решено] Пакетное переименование с использованием алфавитного счётчика kotik147 Скриптовые языки администрирования Windows 6 13-05-2010 00:03
Возвращение ПК в домен под другим именем El Scorpio Microsoft Windows NT/2000/2003 2 06-08-2008 09:45




 
Переход