m3u 用批处理脚本解析

m3u parsing with batch script

我想用批处理命令从 m3u 播放列表中解析艺术家和歌曲名称

#EXTM3U
#EXTINF:151,TJR - We Wanna Party Into We Want Some Pussy (BB Tribe EDIT)
\#Mixit\pjesme\TJR - We Wanna Party Into We Want Some Pussy (BeatBreaker Tribe EDIT).mp3
#EXTINF:202,Alan Walker - Alone (Prisoners Bootleg)
\Users\Asrock 880\Downloads\Alan Walker - Alone (Prisoners Bootleg).mp3
#EXTINF:236,Alan Walker - Alone 2k17 (#Ash Simons Bangerz) (Ft. Holl & Rush)

因此输出的 .txt 文件将如下所示

TJR - We Wanna Party Into We Want Some Pussy (BB Tribe EDIT)
Alan Walker - Alone (Prisoners Bootleg)
Alan Walker - Alone 2k17 (#Ash Simons Bangerz) (Ft. Holl & Rush)

任何帮助都会有用,谢谢

它也可以是力量 shell 或其他任何东西,但有更好的描述我是 DJ...:P

  • 所以您只需要以以下开头的行中的信息 #EXTINF 跟在逗号之后。
  • 您会在 [SO] 上找到数百个示例,这些示例使用 findstr 到 select 行的模式(参见 findstr /?
  • 以及 for /f 来解析带有分隔符和标记的行的内容(参见 for /?

批次中:

@Echo off
(For %%M in (*.m3u
  ) Do For /f "tokens=1* delims=," "%%A" in (
    'findstr "^#EXTINF" %%M'
  ) Do Echo %%B
) > Playlists.txt

在命令行上:

@For /f "tokens=1* delims=," %A in ('findstr "^#EXTINF" playlist.m3u') Do @Echo %B

要重定向到文件,请将 for 命令括在括号中并附加 >playlist.txt

有人想删除 PowerShell 标签,所以这里是一行:

(Select-String *.m3u -Pattern '^#EXTINF') -Replace '^[^,]+,'|Out-File PlayList.txt