用c#运行.cmd文件时遇到问题

时间:2012-11-18 07:15:56

标签: c# ffmpeg cmd

出于某种原因,我似乎无法使用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”无法识别......“即使文件在那里。我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您的系统运行的是Windows 6.1内核或更高版本,System32实际上由基于您正在运行的应用程序的其他目录组成(取决于它是32位还是64位应用程序)。

我假设ffmpeg64.exe是64位应用程序,当您手动执行.cmd文件时,它应默认为64位命令提示符 - 同时确保您的应用程序以“x64”为目标或“任何CPU”。或者,您可以在WoW64目录中放置32位版本的ffmpeg。

此外,我知道您已在评论中说明您不想阅读.cmd文件并对其进行修改,但您可以将ProcessStartInfoEnvironment.SystemDirectory一起编写,而不是使用编码路径。

作为最后一个选项,您可以将ffmpeg exe置于静态位置(正如您在评论中所述,在c:\中工作),或者只是在应用程序的工作目录中。