如何转义Windows批处理文件中的字符

时间:2017-02-08 18:26:27

标签: batch-file ffmpeg

我正在尝试创建一个脚本来运行一个程序,该程序接收文件名作为参数。我遇到的问题是,如果文件名中包含特殊字符,程序将无效。

我发现this帖子对我有所帮助。通过对该脚本进行一些修改,我可以将该程序与包含[]的文件名一起使用。

但是,仍有一些其他特殊字符导致程序无法运行。是否可以为所有特殊字符创建批处理?如果没有,我至少需要能够解析[],以及'

这就是我现在所做的工作。我怎样才能至少为此添加'

if not exist "mp4\" mkdir mp4
setlocal disableDelayedExpansion
for %%f in (*.mkv) do (
  set _a=%%~nf
  set _c=%%f
  setlocal enableDelayedExpansion
  set _b=!_a:[=\[!
  set _name=!_b:]=\]!
  set _d=!_c:[=\[!
  set _fullname=!_d:]=\]!
  "SOMEPATH\ffmpeg\bin\ffmpeg.exe" -i "%%f" -vf subtitles="!_name!.mkv:si=1" -c:v h264_qsv -c:a copy -map 0:v:0 -map 0:a:1 -q:v 6 -look_ahead 0 "mp4/%%~nf.mp4"
  endlocal
)
endlocal
pause

如果你能解释一些很酷的东西背后的原因。我对脚本编程了解不多,但我想了解这批文件中发生的事情......

哦,here是在此程序中转义字符的文档。

0 个答案:

没有答案