2016-09-28 3 views
-1

У меня есть установка коллекции фильмов на моем nas и я пытаюсь переименовать все мои файлы субтитров под тем же именем, что и фильм, расположенный в том же каталоге. Например:Переименуйте файл так же, как самый большой файл в каталоге

D:\Movies\2 Guns (2013) (Bluray)\ 
-2 Guns (2013).mkv 
-English.srt 

Я хотел бы для файла english.srt быть переименован в:

2 Guns (2013).srt 

Короче говоря, я не могу использовать любой тип медиа-менеджер для достижения этой цели. Мне бы хотелось, чтобы это был пакетный файл, но я готов использовать powershell или даже стороннюю программу, если это не медиа-менеджер. Мне нужно, чтобы имя создавалось на основе самого большого файла, расположенного в том же каталоге, а не имени папки, поскольку некоторые из них не соответствуют именам файлов. Кроме того, .srt файлы не всегда будут называться english.srt

Edit-

Так что я пришел с этим:

@echo off 
setlocal enabledelayedexpansion 

for /F "delims=" %%A in ('dir /b *.mp4 *.avi *.mkv') do (
set basename="%%~nA" 
ren *.srt !basename!.eng.srt 
) 

Это прекрасно работает, но как я могу сделать это рекурсивный, поэтому я могу запускать его из родительского каталога vs один за другим?

+0

Вы можете предоставить несколько шаблонов файлов для 'dir', например:' dir/B * .m * * .avi'. Однако ваш код не отражает пример выше ... – aschipfl

+0

Большое вам спасибо за это! Слишком просто и без внимания. Отредактировал мой пример и вопрос о последующих действиях! – Failstyle

+0

Не включайте решения в вопрос; скорее отправьте их в ответ! – aschipfl

ответ

0

Просто измените dir /b ... на dir /b /s ..., это будет проходить через подкаталоги.

Возможно, вам придется включить полные пути, в которых вы также переименовываете.


Полный текст сценария.

setlocal enabledelayedexpansion 

for /F "delims=" %%A in ('dir /b /s *.mp4 *.avi *.mkv') do (
    set basename="%%~nA" 
    ren "%%~dpA*.srt" "!basename!.eng.srt" 
) 

Примечание Я сделал некоторые изменения в команде ren тоже.

Мы завершаем имя кавычками, если у вас есть пробелы. И мы также используем %%dpA, чтобы выяснить, с какого диска и пути мы хотим работать.

+0

Прошу прощения за руку, но я честно не знаю, что изменить. Я изменил то, что вы предложили для команды dir, и попробовал двойные кавычки вокруг обеих частей моей команды ren, но безрезультатно. Я только разобрался, как обрабатывать пробелы в именах файлов через delims. – Failstyle

+0

Я отредактировал сценарий. Посмотрите, работает ли это. Если нет, вы можете запустить 'dir/b/s' из родительского каталога и опубликовать результаты. – FloatingKiwi

+0

Хорошо, это сработало красиво! Спасибо огромное! Спасибо, что объяснили мне, что вы изменили. Когда я прокомментировал, мне не хватало %% ~ dpA. Эта часть - это то, что мне нужно узнать больше! Еще раз спасибо и вернемся к чтению больше для меня! – Failstyle

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