【问题标题】:how to execute command line with arguments in C#如何在 C# 中执行带参数的命令行
【发布时间】:2014-07-20 09:43:07
【问题描述】:

所以,我正在尝试运行命令行,但它似乎没有做任何事情,我不知道我错过了什么,它应该拍摄 .asf 视频并将其转换为 .mp4,任何想法都会很有用,谢谢。

string path1 = @"""C:\Users\Programacion\Desktop\vid.asf""";
string path2 = @"""C:\Users\Programacion\Desktop\vid.mp4""";

 private void butConvert_Click(object sender, EventArgs e)
        {            
            string strCmdText;
            strCmdText = "/C ffmpeg.exe -i " + path1 + " -vcodec mpeg4 -b:v 1200k -flags +aic+mv4 " + path2 + " -loglevel panic";
            System.Diagnostics.Process.Start(@"C:\Users\Programacion\documents\visual studio 2010\Projects\VideosDVR\VideosDVR\ffmpeg.exe", strCmdText);
    }

【问题讨论】:

  • 那会执行..\VideosDVR\ffmpeg.exe /C ffmpeg.exe -i ...,是有意的双.exe吗?
  • 嗨,不,即使没有“.exe”也没有任何反应
  • 已解决,你说得对,我不知道“ffmpeg.exe”被发送了两次,所以我从字符串中退出了“/C ffmpeg.exe”部分,就是这样,谢谢你非常Henk。

标签: c# command-line-arguments


【解决方案1】:

您似乎没有在等待该过程完成。

var process = Process.Start(...);
process.WaitForExit();

【讨论】:

  • 但是应该还是会发生一些事情,比如 .mp4 出现了。
  • 没有例外?我假设您运行此代码后您的主进程仍在运行?所以是的,你是对的,只要你的应用程序仍在运行并且不会杀死任何子进程,你就不需要等待。
【解决方案2】:

例如,您可以在 Process.Start 中使用参数

System.Diagnostics.Process.Start("iexplore.exe","http://google.co.uk");

所以在你的情况下,我认为它会是

System.Diagnostics.Process.Start("ffmpeg.exe","strCmdText")

注意 - 您需要指定 ffmpeg.exe 的完整路径或将其添加到您机器的环境变量列表中

【讨论】:

    【解决方案3】:

    试试这个:

    System.Diagnostics.Process.Start(@"""C:\Users\Programacion\documents\visual studio 2010\Projects\VideosDVR\VideosDVR\ffmpeg.exe""", strCmdText);
    

    注意:" 添加在驱动程序根之前:"C:ffmg.ext" 之后

    【讨论】:

      猜你喜欢
      • 2011-10-31
      • 2013-01-13
      • 1970-01-01
      • 2012-11-06
      • 2018-05-23
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      相关资源
      最近更新 更多