我在 Windows 7 Ultimate SP1 x64 上,运行 MP4Box - GPAC 版本 0.7.2-DEV-rev357-g7115eeb8-master。
我创建了一个这样的 BAT 文件:
mp4box -add %1#trackID=1:name= -add %2#trackID=1:name= -tmp "%~dp1\" -new "%~n1_new.mp4"
工作正常,但在添加之前\
出现%~dp1\
错误:
Error - 2 input names specified, please check usage
为什么需要 2 个反斜杠才能工作?
如果它很重要,我只需将视频和音频拖放到 BAT 文件上。
顺便问一下,%1#trackID=1:name=
可以吗或者我应该将其改为这样"%~1#trackID=1:name="
?
答案1
要解决这个问题,你可以使用批处理变量子串\
将第一个参数的字符串值中的单个反斜杠字符替换\\
为该字符串值中的两个反斜杠字符。您可以set
另一个变量具有新值并相应地使用它。
批处理脚本
@ECHO OFF
SET a=%~1
SET a=%a:\=\\%
SET dp=%~dp1
SET dp=%dp:\=\\%
mp4box -add %a%#trackID=1:name= -add %2#trackID=1:name= -tmp "%dp%" -new "%~n1_new.mp4"
::::mp4box -add %1#trackID=1:name= -add %2#trackID=1:name= -tmp "%dp%" -new "%~n1_new.mp4"
笔记:问题可能是
mp4box
应用程序希望完整路径使用双反斜杠\\
或单正斜杠,/
因为反斜杠字符是转义字符它在内部使用其他方法,因此使用单个反斜杠时它不会从字面上看到反斜杠。
您可能能够使用它来测试它是否也使用正斜杠以及双反斜杠。
SET a=%~1
SET a=%a:\=/%
SET dp=%~dp1
SET dp=%dp:\=/%