0

我在 windows8 中使用 Atomic Parsley 为我的 .mp4 电视节目设置正确的 Atoms。现在我可以正确地指定“常见”标签,例如艺术家、TVShowName 等,这些标签实际上对于我标记的所有文件都是相同的。我的问题是,在批处理文件中,我无法将正确的剧集编号标记到每个文件:“file001”应该是 episode1,“file002”-> episode2 等等。

现在,我正在使用它来标记文件:

for %%1 in (*.m4v *.mp4) do %AtomicParsley% "%%1" --stik "TV Show" --artist "%artist%" --title "%%~n1" --TVShowName "%TVShowName%" --TVSeasonNum %TVSeasonNum% --overWrite

我需要的是某种计数器,为该字段分配--TVEpisode一个递增的(以长度为 1 的步长)和唯一编号。显然,我还需要前面的命令(或它们的等效命令)与 --TvEpisode 计数器一起工作。

4

2 回答 2

2
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION 
SET count=0
for %%e in (*.m4v *.mp4) do (
SET /a count+=1
%AtomicParsley% "%%e" --stik "TV Show" --artist "%artist%" --title "%%~ne" --TVShowName "%TVShowName%" --TVSeasonNum %TVSeasonNum% --overWrite --TVEpisode !count!
)

假设您的实用程序将使用参数--TVEpisode以您希望的方式分配文件名。

于 2013-03-14T13:45:57.073 回答
0

如果您的文件真的被命名为“file001”、“file002”等,您可以从文件名中获取数字,而不是使用计数器。

@echo off
setlocal enabledelayedexpansion
for %%a in (*.mp4) do (
    set "filename=%%~na"
    set /a TVEpisode=1!filename:~-3!-1000
    %AtomicParsley% "%%a" --stik "TV Show" --artist "%artist%" --title "%%~n1" --TVShowName "%TVShowName%" --TVSeasonNum %TVSeasonNum% --overWrite --TVEpisode !TVEpisode!
)

该行set /a TVEpisode=!filename:~-3!抓取文件名的最后三个字符并将它们作为数字分配给 %TVEpisode% (从而删除前导零)。(它实际上是在三个数字前加上 1,然后减去 1000 以返回原始数字,因为set /a如果数字以前导 0 开头,则将其视为八进制。)

于 2013-03-14T14:37:57.260 回答