私は、自動的にプレイリストを生成するバッチスクリプト( - >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"
ようなもので、私はそれが勝ったので、私はSET "location=%%c"
にこの.../
文字列を置くことができますどのように
#EXTINF:???,The Realm Of Orzamar
:\music\Dragon Age Origins\The Realm Of Orzamar.mp3
を取得
#EXTINF:???,The Realm Of Orzamar
Dragon Age Origins\The Realm Of Orzamar.mp3
を取得します' tはmusic\
に変換されます。 filestructureはポータブルドライブに置かれているので絶対パスは決して解決策ではありません。したがって、Androidデバイスや絶対フルパスの異なるデバイスで使用するには、独立してフォルダルートから作業する必要があります。 私はバッチで不慣れなので、これまでのところ基本的なものはほとんどありませんでした。バッチ構文がわからないので、このスクリプトは実際には分かりません。
ありがとうございます。
コード:
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
私は手動で '... \'を試しても動作しませんでした。私は1つのフォルダレベルに上がる必要があります。これまでは '../'だけがこれまで仕事をしてきました。 –