来自 VBS 的 FFMPEG

FFMPEG from VBS

我在 运行 来自 VBS 的 ffmpeg 时遇到如下问题:

Cmd = "cmd.exe /K " & Chr(34) & """C:\Users\admin\Documents\ffmpeg\bin\ffmpeg.exe""" & Chr(34) & " -i " & Chr(34) & """C:\Users\admin\Documents\TestFiles00012936-TXMHD.mxf""" & Chr(34) & " -vcodec copy -acodec copy " & Chr(34) & """C:\Users\admin\Documents\TestFiles00012936-TXMHD.mp4""" & Chr(34) '& " 2> " & Chr(34) & "LogFile.txt" & Chr(34)

objShell.Run Cmd, 10, True

我遇到错误:The system cannot find the path specified

input/output 文件的路径是正确的。我猜这似乎是一个转义序列问题。有的可以指点一下。

试试这个;

Cmd = "cmd.exe /K ""C:\Users\admin\Documents\ffmpeg\bin\ffmpeg.exe"" -i ""C:\Users\admin\Documents\TestFiles00012936-TXMHD.mxf"" -vcodec copy -acodec copy ""C:\Users\admin\Documents\TestFiles00012936-TXMHD.mp4"" 2> LogFile.txt"

将等同于命令行;

cmd.exe /K "C:\Users\admin\Documents\ffmpeg\bin\ffmpeg.exe" -i "C:\Users\admin\Documents\TestFiles00012936-TXMHD.mxf" -vcodec copy -acodec copy "C:\Users\admin\Documents\TestFiles00012936-TXMHD.mp4" 2> LogFile.txt

此问题是由于在双引号已被 "" 转义时向字符串添加 Chr(34) (文字双引号) 引起的(加倍)。


有用的链接

  • Answer from About using Double quotes in Vbscript (详细说明如何在字符串中使用双引号).

您可以使用此函数轻松引用您的变量DblQuote(str)

strcmd = "Cmd /K " & DblQuote("C:\Users\admin\Documents\ffmpeg\bin\ffmpeg.exe") & " -i "& DblQuote("C:\Users\admin\Documents\TestFiles00012936-TXMHD.mxf") &" -vcodec copy -acodec copy "& DblQuote("C:\Users\admin\Documents\TestFiles00012936-TXMHD.mp4") &" 2> LogFile.txt"
wscript.echo strcmd
'---------------------------------------
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'---------------------------------------