1

我想从 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

4 回答 4

2

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

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

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

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

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();
于 2013-03-21T12:57:53.610 回答
0

阅读该课程的文档Process

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

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);
于 2013-03-21T12:58:02.133 回答
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创建一个新对象,调用它,然后读取示例中的输出。ProcessStart()

于 2013-03-21T12:58:26.660 回答
0
var cmd = @"hvite -T 01 -C hcon.con -w net dict hmm_list Ann.wav";
System.Diagnostics.Process.Start("CMD.exe", cmd);
于 2013-03-21T12:58:32.540 回答