-4

我想用批处理命令解析 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)

任何帮助都会很有用,谢谢

它也可以是电源外壳或其他任何东西,但更好的描述是我是 DJ...:P

4

2 回答 2

1
  • #EXTINF因此,您只需要以逗号开头的行中的信息 。
  • 您会在 [SO] 上找到数百个findstr使用模式选择行的示例(请参阅findstr /?
  • 以及for /f用分隔符和标记解析一行的内容(参见/?

在一个批次中:

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

在 cmd 行上:

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

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

于 2017-05-09T11:44:55.860 回答
1

有人想删除 PowerShell 标签,所以这里有一个衬里:

(Select-String *.m3u -Pattern '^#EXTINF') -Replace '^[^,]+,'|Out-File PlayList.txt
于 2017-05-09T19:51:55.743 回答