Рассмотрим эту иерархию:Loop через вложенные папки вложенные папки и выполнить команду на каждом файле последней вложенной
MainFolder\Sub_Folder1\Original_Files\
\Converted_Files\
\Sub_Folder2\Original_Files\
\Converted_Files\
Теперь в каждом ...\Original_Files\
Я кучу видео файлов, которые я буду кодировать и сохранять в соответствующий ...\Converted_Files\
.
я мог бы сделать это для одной подпапки с этим кодом партии:
@echo off
set "sourcedir=G:\Animation\Anime\OnePiece\Episodes\Main"
set "outputdir=G:\Animation\Anime\OnePiece\Episodes\Converted"
PUSHD "%sourcedir%"
for %%F in (*.mkv) DO ffmpeg -i "%%F" -s 640x480 -map 0 -c:v libx265 "%outputdir%\%%F"
POPD
Я генерировал текстовый файл с путем к папкам всех подпапок, которая содержит:
G:\Animation\ToConvert\Berserk_1997_The_Complete_Series
G:\Animation\ToConvert\Blue_Exorcist
G:\Animation\ToConvert\Elfen_Lied
Каждой папку перечисленные в файле, имеют Main
и Converted
папки внутри них. Я должен перебрать все файлы в Main
и сохранить в Converted
, как вы могли видеть выше.
Это то, что я придумал:
@echo off
for /F "tokens=*" %%A in (f.txt) DO (
set "sourcedir=%A%\Main"
set "outputdir=%A%\Converted"
PUSHD "%sourcedir%"
for %%F in (*.mkv) DO ffmpeg -i "%%F" -s 640x480 -map 0 -c:v libx265 "%outputdir%\%%F"
POPD
) %%A
Запуск for /F "tokens=*" %A in (f.txt) DO @echo %A
дает мне имена вложенных папок.
Я как-то подумал, могу ли я передать имя некоторой переменной и объединить \Main
и \Converted
, это может сработать.
Но при запуске кода из окна командной строки, это просто переключение текущего каталога из папки, в которой я запускаю пакетный файл, до C:\Windows
.
Как я могу запустить вложенные петли, один для подпапок, а затем выбрать между работой в Main
и сохранить в Converted
и следующий цикл для файлов в Main
?
Для вашей задачи я хотел бы использовать два вложенные 'для/D' петли для перебора два уровней каталога в основной папке, а затем стандартный' for' цикла для итерирования '* .mkv' файлов .. в вашем последнем скрипте вам нужно [замедленное расширение] (http://ss64.com/nt/delayedexpansion.html), когда вы пишете и читаете одну и ту же переменную в одном блоке кода ... – aschipfl
@aschipfl Можете ли вы поделиться потому что я не знаю пакетного программирования. Все, что я делаю, это поиск в Google и смешивание соответствующих синтаксисов !!!!!! – daddyodevil