자동으로 재생 목록을 생성하는 배치 스크립트 (->windows batch .bat automatic .m3u playlist creation/update)가 있습니다. 이 재생 목록은 rootdir의 하위 폴더에 저장됩니다 (코드 참조). 문제는 재생 목록에서 하위 폴더가 고려되지 않아 음악 파일을 찾을 수 없다는 것입니다. 나는동적 배치 스크립트의 상수 문자열
#EXTINF:???,The Realm Of Orzamar
../Dragon Age Origins\The Realm Of Orzamar.mp3
그리고 내가 그렇게 원 SET "location=%%c"
에이 .../
문자열을 넣을 수있는 방법
#EXTINF:???,The Realm Of Orzamar
:\music\Dragon Age Origins\The Realm Of Orzamar.mp3
을 얻을 뭔가
SET "location='.../' + %%c"
등을 필요
#EXTINF:???,The Realm Of Orzamar
Dragon Age Origins\The Realm Of Orzamar.mp3
수 ' t는 music\
으로 변환됩니다. 절대 경로는 파일 구조가 휴대용 드라이브에 있고 폴더 루트에서 독립적으로 작동해야하므로 절대적인 해결책이 아닙니다. 따라서 안드로이드 장치와 절대 경로가 다른 다른 장치에서 사용할 수 있습니다. 일괄 처리에 익숙하지 않은데 지금까지 몇 가지 기본적인 작업을 해봤지만 일괄 처리 구문을 모르기 때문에이 스크립트를 이해하지 못했습니다.
미리 감사드립니다.
코드 :
CHCP 1252
@ECHO Off
SETLOCAL
:: make a tempfile
:maketemp
SET "tempfile=%temp%\%random%"
IF EXIST "%tempfile%*" (GOTO maketemp) ELSE (ECHO.>"%tempfile%a")
:: Need the start of the tree to scan
SET "rootdir=H:\music"
>"%tempfile%b" (ECHO(%rootdir%&ECHO(*)
FOR /f "delims=:" %%a IN ('FINDSTR /o /L "*" "%tempfile%b"') DO SET /a len=%%a-1
SET "destfile=%~1"
:loop
SHIFT
SET nextdir=%~1
IF NOT DEFINED nextdir GOTO process
IF %nextdir:~0,1%==\ (
PUSHD "%~1"
FOR /f "delims=" %%a IN ('dir /b /s /a-d *.mp3 *.mp4 *.ogg *.m4a *.wma *.flac *.wav') DO >>"%tempfile%a" ECHO(%%~na:2:%%a
) else (
PUSHD "%rootdir%\%~1"
FOR /f "delims=" %%a IN ('dir /b /s /a-d *.mp3 *.mp4 *.ogg *.m4a *.wma *.flac *.wav') DO >>"%tempfile%a" ECHO(%%~na:%len%:%%a
)
POPD
GOTO loop
:process
>%destfile% ECHO(#EXTM3U
(
FOR /f "tokens=1,2*delims=:" %%a IN ('SORT "%tempfile%a"') DO (
ECHO(#EXTINF:???,%%a
SET "location=%%c"
SETLOCAL enabledelayedexpansion
ECHO(!location:~%%b!
endlocal
)
)>>%destfile%
del "%tempfile%*"
GOTO :EOF
Windows에서 백 슬래시가 표준이므로 슬래시를 경로 구분 기호로 사용하지 마십시오! – aschipfl
수동으로'... \'을 시도했지만 제대로 작동하지 않았습니다. 하나의 폴더 레벨까지 올라야합니다. 지금까지'../'만이 그 일을 해왔다. –