出于某种原因,我似乎无法使用c#启动并运行.cmd文件。 cmd文件的一行示例是:
"C:\Windows\system32\ffmpeg64.exe" -v verbose -y -i "S:\TEMP\A.ts" -c:v copy -c:a copy -ss 00:00:00.000 -t 2 "S:\TEMP\A_SHORT.ts"
我尝试了几种不同的方法从C#中启动此文件,例如(其中curDirectory例如是“S:\ TEMP”)
Process p = Process.Start(curDirectory + "\\ffmpeg.cmd");
我也试过
string path = curDirectory + "\\ffmpeg.cmd";
Process p = Process.Start("cmd.exe", @"/c " + path); //I've also tried /k
但是会发生什么是cmd提示会出现并说“C:\ Windows \ System32 \ ffmpeg64.exe”无法识别......“即使文件在那里。我做错了什么?
答案 0 :(得分:0)
如果您的系统运行的是Windows 6.1内核或更高版本,System32实际上由基于您正在运行的应用程序的其他目录组成(取决于它是32位还是64位应用程序)。
我假设ffmpeg64.exe
是64位应用程序,当您手动执行.cmd文件时,它应默认为64位命令提示符 - 同时确保您的应用程序以“x64”为目标或“任何CPU”。或者,您可以在WoW64目录中放置32位版本的ffmpeg。
此外,我知道您已在评论中说明您不想阅读.cmd文件并对其进行修改,但您可以将ProcessStartInfo
与Environment.SystemDirectory
一起编写,而不是使用编码路径。
作为最后一个选项,您可以将ffmpeg exe置于静态位置(正如您在评论中所述,在c:\
中工作),或者只是在应用程序的工作目录中。