windows批处理.bat自动.m3u播放列表创建/更新 [英] windows batch .bat automatic .m3u playlist creation / update
问题描述
所以我寻找一些帮助创建一个批处理文件创建/更新我的所有
需要两个批处理文件(第一个调用第二个):
第一个很容易,我几乎得到了; - )
create_all_playlist.bat(不需要参数,自定义文件) / p>
create_m3u.bat misc-70-80.m3u misc\70 \ misc\80\
create_m3u .bat misc-70-80-90.m3u misc\70\ misc\80\ misc\90\
create_m3u.bat misc-60-70-2000-2010.m3u misc\ 60 \ misc\70\ misc\2000\ misc\2010\
[...]
create_m3u.bat albums-2010.m3u albums\2010\
很容易吗?
我需要你的帮助来写第二个.bat,动态的:
create_m3u.bat output-playlist- name.m3u folder-1 folder-2 [...] folder-n
应该看起来像这样(注意所有都是相对路径和搜索* .mp3 * .mp4 * .ogg(无论类型我cutomize /硬代码)将是递归进入指定的文件夹)
(原始.m3u兼容大多数android& PC播放器)
misc\2000s\Kelly Rowland - Work(Freemasons Arabic Mix).mp3
misc\\ \\ 2000s \Keri Hilson - Knock You Down k Kanye West and Ne-Yo.mp3
misc\2000s\Kid Cudi vs Crookers - Day n Nite.mp3
misc\2000s\Korn - Inja.mp3
[...]
misc\2000s\Ladyhawke - My Delirium.mp3
在最好的情况下,只有最好的情况下,让我们说如果有人有足够的技能生产完整的mp3 / mp4 TAG阅读和形成如下
#EXTM3U
#EXTINF:227,A-Ha - Take On Me
misc\80s\\ \\ A-Ha - Take On Me.mp3
#EXTINF:257,ACDC - 回到黑色
misc\80s\ACDC - 回到Black.mp3
#EXTINF:311, Aerosmith&运行Dmc - 走这条路
misc\80s\Aerosmith& Run Dmc - Walk This Way.mp3
[...]
#EXTINF:289,Alannah Myles - Black Velvet
misc\80s\Alannah Myles - Black Velvet.mp3
并感谢!!
对于原料m3u,啤酒在我身上: - )
- )
解决方案
@ECHO OFF
SETLOCAL
:: make a tempfile
:maketemp
SETtempfile =%temp%\%random%
IF EXIST%tempfile%* GOTO maketemp)ELSE(ECHO。>%tempfile%a)
::需要扫描树的开始
SETrootdir = c:\ sourcedir
>%tempfile%b(ECHO(%rootdir%& ECHO(*)
FOR / fdelims =:%% a IN('FINDSTR /
$ b循环
SHIFT
SET nextdir =%〜1
如果未定义nextdir GOTO过程
PUSHD%rootdir%\%〜1
FOR / f =%% a IN('dir / b / s / ad * .mp3 * .mp4 * .ogg')DO>"%tempfile%aECHO(%%〜na:%% a
POPD
GOTO loop
:process
>%destfile%ECHO(#EXTM3U
(
FOR / ftokens = 1 * delims = :%% a IN('SORT%tempfile%a')DO(
ECHO(#EXTINF:???,%% a
SETlocation = %% b
SETLOCAL enabledelayedexpansion
ECHO(!location:〜%len%!
endlocal
)
)>%destfile%
DEL%tempfile%*
GOTO:EOF
我使用
c:\sourcedir
作为我的起始目录。不执行参数有效性检查。您需要从create_all_playlist.bat
CALL create_m3u.bat
,因为目标执行文件是一个批处理文件。 p>
至于缺少的数据 - 最难的部分是提取信息....
已编辑为允许文件名中的
!
,并从路径中删除\
b
修订:允许绝对路径
@ECHO Off
SETLOCAL
::创建临时文件
:maketemp
SETtempfile =%temp%\%random%
IF EXIST%tempfile%*(GOTO maketemp)ELSE(ECHO。>%tempfile%a)
::需要开始的树扫描
SETrootdir = c:\sourcedir
>%tempfile%b(ECHO(%rootdir%& ECHO(*)
FOR / f delims =:%% a IN('FINDSTR / o / L*%tempfile%b')DO SET / a len = %% a-1
SETdestfile = %〜1
:loop
SHIFT
SET nextdir =%〜1
如果未定义nextdir GOTO过程
如果%nextdir:〜0, 1%== \(
PUSHD%〜1
FOR / fdelims =%% a IN('dir / b / s / ad * .mp3 * .mp4 * .ogg ')DO>>%tempfile%aECHO(%%〜na:2:%% a
)else(
PUSHD%rootdir%\%〜1
FOR / fdelims =%% a IN('dir / b / s / ad * .mp3 * .mp4 * .ogg')DO>>%tempfile%aECHO(%%〜na: %len%:%% a
)
POPD
GOTO循环
:process
>%destfile%ECHO(#EXTM3U
(
FOR / ftokens = 1,2 * delims =:%% a IN('SORT%tempfile%a')DO(
ECHO(#EXTINF:???,%, %a
SETlocation = %% c
SETLOCAL enabledelayedexpansion
ECHO(!location:〜%% b!
endlocal
)
)>%destfile%
del%tempfile%*
GOTO:EOF
注意包含空格的路径必须用引号括起来
tired of manually updating my huge mp3/mp4 DB each time i add new files on my computer and/or smartphone, so i'm looking for some help to create a batch file that create/update all my playlists .m3u automatically.
2 batch files are required (1st is calling the 2nd) :
1st one is easy, i've almost got it ;-)
create_all_playlist.bat (no arguments required, customized file)
create_m3u.bat misc-70-80.m3u misc\70\ misc\80\ create_m3u.bat misc-70-80-90.m3u misc\70\ misc\80\ misc\90\ create_m3u.bat misc-60-70-2000-2010.m3u misc\60\ misc\70\ misc\2000\ misc\2010\ [...] create_m3u.bat albums-2010.m3u albums\2010\
pretty easy huh?
I need your help to write the 2nd .bat, the dynamic one :
create_m3u.bat output-playlist-name.m3u folder-1 folder-2 [...] folder-n
to play it easy, the output file.m3u should looks like this (note all are relative path and the search for *.mp3 *.mp4 *.ogg (whatever type i cutomize/hard-code) would be recursive into the designated folder)
(raw .m3u compatible with most android & PC player)
misc\2000s\Kelly Rowland - Work (Freemasons Arabic Mix).mp3 misc\2000s\Keri Hilson - Knock You Down ft Kanye West and Ne-Yo.mp3 misc\2000s\Kid Cudi vs Crookers - Day n Nite.mp3 misc\2000s\Korn - Inja.mp3 [...] misc\2000s\Ladyhawke - My Delirium.mp3
At very best, only for the very best, let's say if someone is skilled enough to produce the full mp3/mp4 TAG reading and formating as following
#EXTM3U #EXTINF:227,A-Ha - Take On Me misc\80s\A-Ha - Take On Me.mp3 #EXTINF:257,ACDC - Back in Black misc\80s\ACDC - Back in Black.mp3 #EXTINF:311,Aerosmith & Run Dmc - Walk This Way misc\80s\Aerosmith & Run Dmc - Walk This Way.mp3 [...] #EXTINF:289,Alannah Myles - Black Velvet misc\80s\Alannah Myles - Black Velvet.mp3
and thanks!!
for the raw m3u, beers are on me :-)
for the extended full m3u : beers and i'll cook the duck magret ;-)
解决方案@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=c:\sourcedir" >"%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 PUSHD "%rootdir%\%~1" FOR /f "delims=" %%a IN ('dir /b /s /a-d *.mp3 *.mp4 *.ogg') DO >>"%tempfile%a" ECHO(%%~na:%%a POPD GOTO loop :process >%destfile% ECHO(#EXTM3U ( FOR /f "tokens=1*delims=:" %%a IN ('SORT "%tempfile%a"') DO ( ECHO(#EXTINF:???,%%a SET "location=%%b" SETLOCAL enabledelayedexpansion ECHO(!location:~%len%! endlocal ) )>>%destfile% DEL "%tempfile%*" GOTO :EOF
I used
c:\sourcedir
as my starting directory. No parameter-validity checks are performed. You'd need toCALL create_m3u.bat
fromcreate_all_playlist.bat
because the target executble is a batch file.As for the missing data - hardest part is extracting information....
Edited to allow
!
in filenames and remove leading\
from path
Revision: To permit absolute path
@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=c:\sourcedir" >"%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') DO >>"%tempfile%a" ECHO(%%~na:2:%%a ) else ( PUSHD "%rootdir%\%~1" FOR /f "delims=" %%a IN ('dir /b /s /a-d *.mp3 *.mp4 *.ogg') 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
Noting that "paths containing spaces must be in quotes"
这篇关于windows批处理.bat自动.m3u播放列表创建/更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!