For 循环从文件集中提取不完整的标题

问题描述 投票:0回答:1

我尝试使用批处理脚本通过从 mkvinfo 中提取标题值来自动批量重命名文件。

现在,我有一些标题如下的文件:

"Downloaded From: WWW.BEPRITY.COM - FACE.MASK.S23"

结果我的文件被重命名为:

"Downloaded From.mkv"

我怀疑名称中的冒号有问题。

这是我的批处理脚本

@echo off
setlocal enabledelayedexpansion

for %%F in (*.mkv) do (
    set "title="
    for /f "tokens=2 delims=:" %%A in ('mkvinfo "%%F" ^| find "Title"') do (
        set "title=%%A"
        set "title=!title:~1!"
    )
    if defined title (
        ren "%%F" "!title!.mkv"
        echo Renamed "%%F" to "!title!.mkv"
    ) else (
        echo No title found for "%%F"
    )
)

endlocal
for-loop batch-file
1个回答
0
投票

您尚未向我们提供

mkvinfo
在所选行上报告的格式。

我怀疑那条线是

Title: Downloaded From: WWW.BEPRITY.COM - FACE.MASK.S23

这会产生这个问题,而

Title: FACE.MASK.S23

将被正确处理。

我建议

for %%A
应该是

for /f "tokens=2,* delims=:" %%A in ('mkvinfo "%%F" ^| find "Title"') do (
    set "title=%%B"
    if not defined title set "title=%%A"
    set "title=!title:~1!"
)

应将

%%A
设置为
 Downloaded From
,将
%%B
设置为
 WWW.BEPRITY.COM - FACE.MASK.S23
,以实现
Downloaded From: WWW.BEPRITY.COM - FACE.MASK.S23

%%A
 FACE.MASK.S23
%%B
 FACE.MASK.S23

© www.soinside.com 2019 - 2024. All rights reserved.