Пакет для нескольких файлов M3U - PullRequest
1 голос
/ 07 марта 2020

Я использую этот пакетный файл для создания списков воспроизведения .m3u, но он создает в одном списке воспроизведения

@echo on
color 0e
echo PLEASE WAIT, BUILDING PLAYLIST FILE, EXCLUDING BAT, TXT, M3U, SRT and JPG FILES
if exist "playlist.m3u" del "playlist.m3u"
Setlocal EnableDelayedExpansion
set "_t0=1"
if "%CD%"=="%CD:~0,3%" set "_t0=0"
for /F "tokens=*" %%A In ('dir %* /a-d /b /on /s ^| %SystemRoot%\System32\findstr.exe /V /I /E /L ".bat .m3u .txt .db .srt .jpg" ^| %SystemRoot%\System32\sort.exe') do (
    set "_t1=%%A"
    set "_t2=!_t1:%CD%=!"
    echo !_t2:~%_t0%!>>playlist.m3u
)
endlocal

этот пакетный файл получил здесь Windows Пакетные файлы и "&"

Структура папок с файлами, пример:

20000 Lieus sous les Mers (1988)(Coktel Vision)
      20000 Lieus sous les Mers (1988)(Coktel Vision)(fr)(Disk 1 of 2)[CPM Version].dsk
      20000 Lieus sous les Mers (1988)(Coktel Vision)(fr)(Disk 2 of 2)[CPM Version].dsk
Zombi (1990)(Ubisoft)
      Zombi (1990)(Ubisoft)(fr)(Disk 2 of 2).dsk
      Zombi (1990)(Ubisoft)(fr)(Disk 2 of 2).dsk

... et c

Пример вывода скрипта (playlist.m3u):

20000 Lieus sous les Mers (1988)(Coktel Vision)\20000 Lieus sous les Mers (1988)(Coktel Vision)(fr)(Disk 1 of 2)[CPM Version].dsk
20000 Lieus sous les Mers (1988)(Coktel Vision)\20000 Lieus sous les Mers (1988)(Coktel Vision)(fr)(Disk 2 of 2)[CPM Version].dsk
Zombi (1990)(Ubisoft)\Zombi (1990)(Ubisoft)(fr)(Disk 2 of 2).dsk
Zombi (1990)(Ubisoft)\Zombi (1990)(Ubisoft)(fr)(Disk 2 of 2).dsk

et c ...

Я бы хотел адаптировать пакет так, чтобы он создавал кратные значения m3u в соответствии с именами папок, пример списков воспроизведения:

Папки:

20000 Lieus sous les Mers (1988)(Coktel Vision)
Zombi (1990)(Ubisoft)

et c ...

пакетный файл будет создавать плейлисты m3u

20000 Lieus sous les Mers (1988) (Coktel Vision) .m3u

/20000 Lieus sous les Mers (1988)(Coktel Vision)/20000 Lieus sous les Mers (1988)(Coktel Vision)(fr)(Disk 1 of 2)[CPM Version].dsk
/20000 Lieus sous les Mers (1988)(Coktel Vision)/20000 Lieus sous les Mers (1988)(Coktel Vision)(fr)(Disk 2 of 2)[CPM Version].dsk

Zombi (1990) (Ubisoft) .m3u

/Zombi (1990)(Ubisoft)/Zombi (1990)(Ubisoft)(fr)(Disk 2 of 2).dsk
/Zombi (1990)(Ubisoft)/Zombi (1990)(Ubisoft)(fr)(Disk 2 of 2).dsk

Вы можете мне помочь?

1 Ответ

1 голос
/ 08 марта 2020
@echo off

for /d %%A in (*) do @if exist "%%~A\*.dsk" (
    for %%B in ("%%~A\*.dsk") do @echo \%%~A\%%~nxB
) > "%%~fA\%%~nxA.m3u"

Этот скрипт настроен для запуска в текущем рабочем каталоге, в котором находятся подпапки.

for /d получит подпапки. if exist гарантирует, что файлы *.dsk существуют до записи файла .m3u. for перебирает файлы .dsk и отображает путь к файлу .m3u.

Просмотр for /? об использовании модификаторов fnx т.е. %%~fA - полный путь, а %%~nxA - имя и расширение .

Исходный код выглядит непригодным для этой задачи, поэтому переписал код, а не адаптировать код.

...