我在windows8中使用Atomic Parsley为我的.mp4电视节目设置正确的Atoms。现在我可以正确指定“常用”标签,例如Artist,TVShowName等,这对于我标记的所有文件实际上是相同的。我的问题是在批处理文件中我无法将正确的剧集编号标记到每个文件:“file001”应该是episode1,“file002” - >第2集等等。
现在,我正在使用它来标记文件:
for %%1 in (*.m4v *.mp4) do %AtomicParsley% "%%1" --stik "TV Show" --artist "%artist%" --title "%%~n1" --TVShowName "%TVShowName%" --TVSeasonNum %TVSeasonNum% --overWrite
我需要的是某种计数器,它为这个字段--TVEpisode
分配一个增加的(以长度1为步长)和唯一的数字。显然,我还需要前面的命令(或它们的等价物)与--TvEpisode计数器一起工作。
答案 0 :(得分: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
的参数以您希望的方式分配文件名。
答案 1 :(得分: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%(从而删除前导零)。 (它实际上在前面加上三位数字,然后减去1000以取回原始数字,因为set /a
如果以前导0开头,则将数字视为八进制。)