Для l oop рекурсивно создайте отсутствующую папку бесконечно - PullRequest
0 голосов
/ 12 января 2020

Я хочу создать командный файл, который будет go рекурсивно проходить через все папки в текущей папке, и создать папку "MP3", если она не существует.

Это почти работает, но проблема является то, что когда код создает папку «MP3», он будет go в ней и создаст другую папку «MP3», затем другую и так далее. Я не знаю, как остановить это поведение.

Вот мой код:

echo off
for /d /r %%i in (*) do (
    echo %%i
    if not exist "%%i\MP3\NUL" md "%%i\MP3"
)
PAUSE

Пример результата:

Исходная структура папок. Пакетный файл находится в папке «level0»

folder structure

Конечная структура папки. Единственное, что останавливает этот код, это когда путь слишком длинный! (отображается не каждый уровень папки «MP3»)

enter image description here

Мне нужен переключатель '/ r', так как мне нужно go через папки рекурсивно, но я не ожидал, что он войдет в папку, которую я только что создал.

Есть ли способ остановить это поведение, все еще используя ключ '/ r', или мне нужно разрешить go the ' / r 'переключать и кодировать мою собственную рекурсивную функцию?

1 Ответ

0 голосов
/ 12 января 2020

Так что спасибо за вашу помощь в комментариях, ребята, это мой окончательный проект.

Я подумал, что это может помочь кому-то еще, вот он.

Вкратце, он проходит через все мои musi c и закодируйте все мои файлы fla c в mp3 файлы в папку MP3, расположенную внутри папки с исходными файлами fla c, используя frea c.

echo off
set freacpath="%programfiles(x86)%\freac\freaccmd.exe"

rem going through folders with recursion and then through all flac files
rem to convert to mp3 using freac LAME vbr quality 0 (best)
for /d /r %%i in (*) do (

rem check if the current folder is already named "mp3"
rem prior creating the mp3 folder
    if /I not "%%~ni" == "mp3" (
        if not exist "%%i\MP3\NUL" md "%%i\MP3"
    )

rem echo %%~ni
    for %%j in ("%%i"\*) do (
rem     echo %%~nj
        IF "%%~xj" == ".flac" (
            %freacpath% -e LAME -m VBR -q 0 -o "%%i\mp3\%%~nj".mp3 "%%j"
        )       
    )
)
PAUSE

Код расположен в каталоге musi c root.

...