在批处理中获取括号内的字符串

4
我决定学习一点批处理知识。为了做点有用的事情,我决定编写一个脚本来组织我的音乐文件。它们都是这个格式:
Band(Album)- TrackNumber - TrackName
我想让我的脚本创建一个以乐队名称命名的文件夹,在其中放置专辑名称的文件夹。所以我需要操作文件名,但我不知道如何使用FINDSTR或其他任何方法来获取括号之前和之间的字符串。我该怎么做?

这个 Band (Album) - TrackNumber - TrackName 是文件名还是 mp3 内部的标签? - npocmaka
文件名。像乐队(专辑)-曲目号-曲目名称.mp3 - João Menighin
1个回答

3
以下是一些帮助您入门的资源:
- Technet - DosTips - SS64 - Rob van de Woude - ComputerHope 以下是如何解析您列出的字符串的示例。请注意,如果乐队、专辑或曲名中有空格,则此示例将无法正常工作。
for /f "delims=()- " %%A in ("Band (Album) - TrackNumber - TrackName") do (
    echo Band = "%%~A"
    echo Album = "%%~B"
    echo TrackNumber = "%%~C"
    echo TrackName = "%%~D"
)

输出:

Band = "Band"
Album = "Album"
TrackNumber = "TrackNumber"
TrackName = "TrackName"

然而,这个例子将通过不使用空格作为分隔符来进行工作。 不幸的是,这意味着结果中的空格将不被修剪。

for /f "delims=()-" %%A in ("Band Name (Album) - Track Number - Track Name") do (
    echo Band = "%%~A"
    echo Album = "%%~B"
    echo TrackNumber = "%%~C"
    echo TrackName = "%%~D"
)

输出:

Band = "Band Name "
Album = "Album"
TrackNumber = " Track Number "
TrackName = " Track Name"

字符串中的空格可以被修剪,但我会让你学习这种技巧 :) 提示:请参考上面的链接。

非常感谢。我想我可以自己继续了。感谢您的解释和提供的链接,我会查看的 =) - João Menighin
我的结果是:乐队 = "乐队名称" 专辑 = "%~B" 曲目编号 = "%~C" 曲目名称 = "%~D" - Mark Deven
@MarkDeven 在 delims 之前应该添加 tokens=1-4。默认情况下,for 从每行读取的项数为 1。 - Itay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接