@ECHO OFF
SETLOCAL
CALL :gffmpeg "in.mpg -vf "hqdn3d=0:0:4:0" -c:v h264 out.mp4"
CALL :gffmpeg2 in.mpg "-vf "hqdn3d=0:0:4:0" -c:v h264" out.mp4
GOTO :eof
:gffmpeg
SET "params=%*"
ECHO ffmpeg -i %params:~1,-1%
GOTO :EOF
:gffmpeg2
SET "params=%*"
SET parm1=%~1
:parml
SHIFT
SET "parmlast=%~2"
IF DEFINED parmlast GOTO parml
SET "parmlast=%~1"
SET "parm=%parm1%"
:parm1L
IF DEFINED parm SET "parm=%parm:~1%"&SET "params=%params:~1%"&GOTO parm1L
SET "parm=%parmlast%"
:parmLL
IF DEFINED parm SET "parm=%parm:~1%"&SET "params=%params:~0,-1%"&GOTO parmLL
ECHO ffmpeg -i %parm1% %params:~2,-2% %parmlast%
GOTO :EOF
這裏有兩種方法 - 第一種方法需要重新格式化參數提供的;第二個是你目前掌握的。
所以,服用第二方法步驟一步:
駕駛批次thisbatch in.mpg「-vf 「hqdn3d = 0:0:4:0」 -c: v H264" out.mp4
@ECHO OFF
SETLOCAL
SET "params=%*"
SET parm1=%~1
:parml
SHIFT
SET "parmlast=%~2"
IF DEFINED parmlast GOTO parml
SET "parmlast=%~1"
SET "parm=%parm1%"
:parm1L
IF DEFINED parm SET "parm=%parm:~1%"&SET "params=%params:~1%"&GOTO parm1L
SET "parm=%parmlast%"
:parmLL
IF DEFINED parm SET "parm=%parm:~1%"&SET "params=%params:~0,-1%"&GOTO parmLL
ECHO ffmpeg -i %parm1% %params:~2,-2% %parmlast%
GOTO :EOF
首先,設置params
到整個命令尾in.mpg "-vf "hqdn3d=0:0:4:0" -c:v h264" out.mp4
(在set
命令引號確保就行後續空格不 includ版在分配給該變量的值。)
集parm1
到第一這些參數,其中移除了引號如果它們存在(的~
執行此),因此變得parm1
in.mpg
。
接下來,我們具有
- 「偏移」 中的參數位置的環:#1被丟棄,#2變爲#1和 等。
- 將
parmlast
設置爲結果#2參數。
- 檢查
parmlast
是否有值。如果有,繼續轉移,直到它沒有。
%1
現在必須具有最後一個參數,因此將其指定爲parmlast
並刪除任何引號。 parmlast
獲得值out.mp4
。
化妝parm
具有相同的價值parm1
所以in.mpg
現在另一個循環。刪除第一個字符parm
和params
,直到parm
爲空。這消除了從in.mpg
所以params
變得params
"-vf "hqdn3d=0:0:4:0" -c:v h264" out.mp4
接着,拉相似的技巧,此時使用paramlast
從端的params
除去out.mp4
。 params
變得"-vf "hqdn3d=0:0:4:0" -c:v h264"
最後一步 - 回波與-i
開關,的parm1
值,從params
字符串減去第一2和最後2個字符(空間「和」所需ffmpeg
線空間分別爲)並應用parmlast
的最後一個參數。
我推薦一種不同的評論方法。在另一個命令的同一行使用REM非常混亂。我只是在你正在評論的命令之前使用':: comment',或者甚至使用'REM註釋'。 – unclemeat
我建議你使用單引號的方法,然後用雙引號代替是最好的方法。但是,您是否真的需要將單引號替換掉?你還可以用單引號中的開關值調用ffmpeg命令嗎? – unclemeat
@unclemeat,之後的評論是爲你的幫手,但謝謝。不幸的是,無論ffmpeg是否接受單引號,該cmd字符串都不會被Win的COMMAND.COM接受。並導致ffmpeg錯誤: 1. '[NULL @ 0000000004bb96a0]無法找到'-vf'的合適輸出格式hq n3d = 0:0:4:0'-c:v h264'' 2。 '-vf'hqdn3d = 0:0:4:0'-c:v h264:無效參數' –