2013-03-14 12 views
0

我在Windows8中使用Atomic Parsley爲我的.mp4電視節目設置正確的原子。現在我可以正確指定「常用」標籤,例如Artist,TVShowName等,這些標籤對於我標記的所有文件都是相同的。我的問題是,在批處理文件中,我無法爲每個文件標記正確的劇集號碼:「file001」應該是episode1,「file002」 - > episode2等等。cmd批次需要計數器給文件列表分配唯一編號

現在,我使用這個標記文件:

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

我需要的是某種計數器是分配給這個領域--TVEpisode增加(在lenght 1步),唯一編號。顯然,我還需要使用前面的命令(或它們的等效命令)與-TvEpisode計數器一起工作。

回答

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以您希望的方式分配文件名。

+0

謝謝你們。爲了完整起見,當我發佈「--Tvepisode」時,我錯了。實際的開關是'--TVEpisodeNum'。現在它正常工作 – 2013-03-16 13:48:46

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開始)。

+1

如果數字的前導零和數字大於7,則此方法失敗。正確的表達式是:'set/a TVEpisode = 1!filename:〜-3!%% 1000' – Aacini 2013-03-14 15:25:19

+0

Thanks @Aacini!我之前一直在這樣做。編輯我的答案。 (我把它做成了'-1000'而不是'%% 1000' - 我猜這是你的錯字,或者我不確定你得到了什麼。) – 2013-03-14 16:49:01

+2

'%'是餘數(mod )運營商。我習慣性地使用它來代替減法,因爲當前綴零的數量未知時它也可以工作:'set/A number = 100!stringWith1to3Digits!%% 1000'。 – Aacini 2013-03-14 18:17:49

相關問題