2012-01-23 37 views
0

我正在使用MP4Box爲視頻添加字幕文件。以下命令完美地從命令行運行:從命令行MP4Box添加字幕

c:/GPAC/MP4Box -add c:/test.m4v#audio -add c:/test.m4v#video -add c:/test_en.srt:hdlr=sbtl:lang=en:group=2:layer=-1 -new c:/test2.m4v 

但是,我真正想做的是將命令放入.bat文件。下面是我的批處理文件命令:

%1/GPAC/MP4Box -add %2/%3#audio -add %2/%3#video %4 -new %2/%3 

正如你可以看到我試圖在「-add C到傳遞:/test.m4v#video -add C:/test_en.srt:hdlr = sbtl :lang = en:group = 2:layer = -1「作爲第四個參數。我想這樣做的原因是可能會添加許多字幕文件:

「-add c:/test.m4v#video -add c:/test_en.srt:hdlr = sbtl:lang = en:group = 2:layer = -1 -add c:/test.m4v#video -add c:/test_ja.srt:hdlr = sbtl:lang = ja:group = 2:layer = -1:disabled「

so我並不知道需要多少個add命令,所以我只想將它們全部作爲一個參數傳遞。但是,mp4box不喜歡這個。

我不確定這是對mp4box或批處理文件參數的一般限制。

+0

「mp4box不喜歡這種」 - 可你稍微擴展一下?你有錯誤嗎? – blahdiblah

+0

不,沒有錯誤。不喜歡這個,我的意思是直接從命令行運行,但不是從具有完全相同參數的批處理文件中運行。 – irrational

回答

0

我最終解決了這個問題,每次需要運行代碼時都要從代碼中寫入/重寫批處理文件。所以我會用我所有的參數創建批處理文件。運行。然後刪除該文件。這很好。

0

Windows上的批處理文件很古怪,功能有限。你可以做的是使用Cygwin,它允許你在Windows上使用一個真正的shell(比如Bash)。

1

我知道這是一個古老的線索,但對於任何人在未來尋找。

我曾經在一個批處理文件下面的辦法,與filemenu工具相結合,使一個簡單的右鍵菜單功能來啓動批處理過程:

for %%a in (*.m4v) do mp4box -add "%%~Na.eng.srt":lang=eng:layout=0x60x0x-1:group=2:hdlr="sbtl:tx3g" "%%a"