我想从C#应用程序运行多个CMD命令。
cmd上的命令就像“C:\ Users \ Sara Mamdouh \ Desktop \ New folder> hvite -T 01 -C hcon.con -w net dict hmm_list Ann.wav”。
我的问题是如何从C#应用程序调用此命令,并以字符串形式接收结果?
答案 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);