我使用下面的批處理文件來創建分類m3u格式我的網絡媒體文件夾中的播放列表:的Windows批處理文件和「&」
@Echo Off
color 0e
Echo PLEASE WAIT, BUILDING PLAYLIST FILE, EXCLUDING BAT, TXT, M3U, SRT and JPG FILES
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 ^|findstr /v /i ".bat .m3u .txt .db .srt .jpg"^| sort') Do (
Set _t1=%%A
Set _t2=!_t1:%CD%=!
Echo !_t2:~%_t0%!)>>playlist.m3u
示例文件夾結構:
E:\Share\Media\TV\SHOW_NAME\Season 1\
E:\Share\Media\TV\SHOW_NAME\Season 2\
...等
示例腳本輸出(playlist.m3u):
SHOW_NAME\Season 1\S01E01.avi
SHOW_NAME\Season 1\S01E02.avi
SHOW_NAME\Season 1\S01E03.avi
SHOW_NAME\Season 2\S02E01.avi
...等
您會注意到.m3u缺少完整路徑(這是故意的),因爲我希望腳本具有靈活性。用戶可以以任何深度/驅動器盤符映射驅動器,或以UNC(domain.com\Share\Media\TV\SHOW_NAME
)等方式訪問共享,.m3u播放列表仍然可以運行。我最近遇到的麻煩是,如果一個文件夾包含符號(&)符號,則腳本不能按預期運行。我創建了一個樣本文件夾:
E:\Share\Media\NEW&FOLDER\Season 1
樣品m3u格式的播放列表:
t1:E:\Share\Media\NEW
t1:E:\Share\Media\NEW
t1:E:\Share\Media\NEW
t1:E:\Share\Media\NEW
t1:E:\Share\Media\NEW
提示報告如下:
Set _t2=!_t1:E:\Share\Media\NEW & FOLDER=!
Echo !_t2:~1!
) 1>>playlist.m3u
'FOLDER' is not recognized as an internal or external command,
operable program or batch file.
我在做什麼錯?我從這個論壇創建這個批處理文件有很多幫助 - 任何見解都將不勝感激。
P.S.已經在Windows 7和Windows Server 2012R2上進行了測試。
+1,一般很好的建議,但不是100%準確。這一切都取決於批解析器的工作順序。正常擴展發生在檢測到有毒字符之前,因此使用正常擴展時不需要引號。這可以工作:'set var =%var:a&b =%'。但是這不會:'set var =!var:a&b =!'。在兩種情況下使用引號可能是一種很好的做法,即使它們僅在第二種情況下才需要。 – dbenham 2014-09-22 09:40:55
@Mofi @dbenhamFANTASTIC! – tjs4ever 2014-09-23 22:18:36
@Mofi非常感謝你! 我現在有一個新發現的問題:腳本不會運行任何包含單詞「蝙蝠」的文件夾。例如: 找不到E:\ Share \ Media \ TV \ Batman 找不到E:\ Share \ Media \ TV \ Battlestar Galactica 有什麼想法?測試文件夾「Idontwannabeabatmanguy」也不起作用。 – tjs4ever 2014-09-23 22:27:17