从c#执行命令到cmd

时间:2013-03-21 12:56:24

标签: c# cmd

我想从C#应用程序运行多个CMD命令。

cmd上的命令就像“C:\ Users \ Sara Mamdouh \ Desktop \ New folder> hvite -T 01 -C hcon.con -w net dict hmm_list Ann.wav”。

我的问题是如何从C#应用程序调用此命令,并以字符串形式接收结果?

4 个答案:

答案 0 :(得分:2)

首先,您应该将其写在bat文件中,并将其另存为bat.bat

cd \
cd C:\Users\Sara Mamdouh\Desktop\New folder
exit

之后您可以使用Process.Start()方法。

  

通过指定应用程序的名称来启动进程资源   一组命令行参数,并将资源与a关联   新的流程组件。

Process p = new Process();
ProcessStartInfo ps = new ProcessStartInfo();
ps.FileName = "path to bat.bat";
ps.RedirectStandardInput = true;
ps.RedirectStandardOutput = true;
ps.UseShellExecute = false;
p.StartInfo.Arguments = "hvite -T 01 -C hcon.con -w net dict hmm_list Ann.wav";
p.StartInfo = ps;
p.Start();
string output = p.StandardOutput.ReadToEnd();

答案 1 :(得分:0)

阅读Process课程的documentation

由于您在控制台窗口中看到的信息输出C:\Users\Sara Mamdouh\Desktop\New folder>可能不是您要发出的命令的一部分,您需要在命令中添加绝对路径名,以便找到文件:< / p>

var cmd = @"\"<path to hvite>\hvite\" -T 01 -C hcon.con -w net dict hmm_list \"C:\Users\Sara Mamdouh\Desktop\New folder\Ann.wav\"";
System.Diagnostics.Process.Start("CMD.exe", cmd);

答案 2 :(得分:0)

如果您只需要启动流程,则可以使用Process.Start方法:

System.Diagnostics.Process.Start("cmd" "whatever parameters");

要阅读输出,请查看MSDN页面上Process.StandardOutput

的示例

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx

基本上,您不是只调用Process.Start,而是使用所需参数创建一个新的Process对象,在其上调用Start(),然后如示例中那样读取输出。

答案 3 :(得分:0)

var cmd = @"hvite -T 01 -C hcon.con -w net dict hmm_list Ann.wav";
System.Diagnostics.Process.Start("CMD.exe", cmd);