Запустите несколько .bat файлов во всех подпапках.

Вопрос или проблема

У меня есть 932 папки, каждая из которых содержит альбом в формате mp3. У меня есть пакетный файл с именем Makeplaylist.bat, который создает файл плейлиста из файлов, а затем удаляет себя. Он работает отлично

если я запускаю каждый по отдельности. Но я хотел бы запустить их все сразу. Если я делаю поиск Makeplaylist.bat и выбираю все результаты, а затем нажимаю Enter, открывается 932 окна командной строки, но команды на самом деле не выполняются.

Вот структура директорий:

...\Главная папка
       \Альбом 1
           \01 Файл 1.mp3
           \02 Файл 2.mp3
           \03 Файл 3.mp3
           \04 Файл 4.mp3
           \Makeplaylist.bat

       \Альбом 2
           \01 Файл 1.mp3
           \02 Файл 2.mp3
           \03 Файл 3.mp3
           \04 Файл 4.mp3
           \Makeplaylist.bat

    ...\Альбом ...

@echo off

cd /d "D:\iPod"

for /f delims^= %%G in =;('
     2^>nul "%Windir%\System32\Where.exe" /r "%cd%" "*play*st.bat"
   ');= do cd /d "%%~dpG" && echo/Запуск: "%%~fG" & call "%%~nxG" 

Сохраните это как SomeName.cmd в корневой папке, где у вас находятся подпапки с MP3 и .bats.

Назовите его, как хотите, через ярлык, прямой клик или командную строку, если предпочитаете. Он найдет и выполнит каждый из ваших .bat файлов один за другим в одном окне, рекурсивно.


Примечание: Я полагаю, что вам нужен один пакетный файл, который может рекурсивно выполнять то, что делают другие пакетные файлы, без необходимости вызывать их по одному… используйте один пакетный файл для “обновления” ваших плейлистов:

@echo off

cd /d "D:\iPod"

for /r /d  %%G in =;( * );= do =;(
     >nul 2>&1 dir /on /a:-d /b "%%~dpnxG\*.mp3" "%%~dpnxG\*.ogg" && 2>nul =;(
     cd /d "%%~dpnxG" && >"PlayList.m3u" dir /a:-d /on /b .\*.mp3 .\*.ogg );= 
    );=

Вам не нужен пакетный файл для этого, это выглядит очень просто. Просто выполните эту команду в командной строке (промпт):

for /f "delims=" %a in ('dir /b /s "d:\iPod\*Playlist.bat"') do start "" /w /d "%~dpa" "%~nxa"

Ответ или решение

Как запустить несколько .bat файлов во всех подпапках

Если у вас есть структура каталогов, как описано, и вы хотите запустить несколько .bat файлов, которые создают плейлисты из mp3-файлов и затем удаляют себя, вы можете сделать это с помощью отдельного батника.

Описание системы

Ваши папки с музыкальными альбомами выглядят следующим образом:

...\Main Folder
       \Album 1
           \01 File 1.mp3
           \02 File 2.mp3
           \Makeplaylist.bat
       \Album 2
           \01 File 1.mp3
           \02 File 2.mp3
           \Makeplaylist.bat
    ...\Album ...

Здесь мы имеем 932 подпапки, каждая из которых содержит .mp3 файлы и файл Makeplaylist.bat. Вы хотите автоматизировать процесс запуска каждого .bat файла, чтобы не открывать их вручную.

Решение

Существует несколько подходов к решению данной задачи, но наиболее эффективным будет использование одного командного файла, который рекурсивно обойдет все подпапки и выполнит .bat файлы.

1. Создание нового командного файла

Создайте новый текстовый файл и сохраните его с расширением .cmd или .bat, например, RunAllPlaylists.cmd. Разместите этот файл в корневой папке, где находятся ваши альбомы.

2. Код для запуска всех .bat файлов

Вставьте следующий код в созданный файл:

@echo off
cd /d "D:\iPod" 
for /f "delims=" %%G in ('dir /b /s "Makeplaylist.bat"') do (
    echo Running: "%%G"
    call "%%G"
)
3. Объяснение кода
  • @echo off: Отключает отображение команд в консоли.
  • cd /d "D:\iPod": Переходит в директорию, где находятся ваши альбомы.
  • for /f "delims=" %%G in ('dir /b /s "Makeplaylist.bat"') do: Выполняет команду dir, которая ищет все файлы Makeplaylist.bat во всех подпапках и сохраняет каждый найденный путь в переменной %%G.
  • echo Running: "%%G": Отображает, какой .bat файл запускается.
  • call "%%G": Запускает найденный .bat файл.
4. Запуск командного файла

После сохранения файла RunAllPlaylists.cmd, просто дважды щелкните по нему или запустите через командную строку, чтобы инициировать процесс. Все .bat файлы будут выполнены последовательно.

Заключение

Данный решением позволит вам запустить все ваши Makeplaylist.bat файлы во всех подпапках без необходимости делать это вручную. Это сэкономит значительное количество времени и минимизирует вероятность ошибок. При правильном использовании вы сможете насладиться вашей музыкальной коллекцией без лишних процедур.

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

Оцените материал
Добавить комментарий

Капча загружается...