Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从c执行cmd中的命令#_C#_Cmd - Fatal编程技术网

C# 从c执行cmd中的命令#

C# 从c执行cmd中的命令#,c#,cmd,C#,Cmd,我想从C#应用程序运行多个CMD命令 cmd上的命令类似于“C:\Users\Sara Mamdouh\Desktop\New folder>hvite-T 01-C hcon.con-w net dict hmm\u list Ann.wav” 我的问题是如何从C应用程序调用此命令并以字符串形式接收结果?首先,您应该将其写入bat文件,并将其保存为likebat.bat cd \ cd C:\Users\Sara Mamdouh\Desktop\New folder exit 之后你可以使用

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

cmd上的命令类似于“C:\Users\Sara Mamdouh\Desktop\New folder>hvite-T 01-C hcon.con-w net dict hmm\u list Ann.wav”


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

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

cd \
cd C:\Users\Sara Mamdouh\Desktop\New folder
exit
之后你可以使用这个方法

通过指定应用程序的名称和 一组命令行参数,并将资源与 新流程组件

阅读
过程
类的


由于控制台窗口中显示的信息输出
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);
var cmd=@“\”\hvite\”-T 01-C hcon.con-w net dict hmm\u list \“C:\Users\Sara Mamdouh\Desktop\New folder\Ann.wav\”;
System.Diagnostics.Process.Start(“CMD.exe”,CMD);
如果您只需要启动流程,则可以使用该方法:

System.Diagnostics.Process.Start("cmd" "whatever parameters");
要阅读输出,请查看MSDN页面上
流程的示例。StandardOutput


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

到目前为止您尝试了什么?
C:\Users\Sara Mamdouh\Desktop\New folder>
只是控制台窗口中指示当前文件夹的信息输出。它不能是命令的一部分。在执行
hvite
命令之前,您需要发出
CD
。如何执行@ThorstenDittmar?我知道OP在他的问题中写了这一点,但“C:\…>”部分是他在控制台窗口中看到的,不能成为命令的一部分。@ThorstenDittmar您完全正确!它不能是命令的一部分。更新即将到来。这是显示在屏幕“c:\users\sara mamdouh\documents\visual studio 2010\Projects\HTK\HTK\bin\Debug”上的输出。这不包括要求的结果。其中HTK是应用程序名。它不起作用,出现异常“Process对象必须将UseShellExecute属性设置为false才能重定向IO流。”我需要帮助!cmd上没有显示任何输出。什么不清楚?当你打开Windows控制台时,你会看到上面的“路径部分”。然而,这并不是你发出的命令的一部分——只有在那里你才能知道你在哪个文件夹中。当您从自己的应用程序发出命令时,最好尽可能使用绝对路径名。这就是我上面所说的。
var cmd = @"hvite -T 01 -C hcon.con -w net dict hmm_list Ann.wav";
System.Diagnostics.Process.Start("CMD.exe", cmd);
var cmd = @"hvite -T 01 -C hcon.con -w net dict hmm_list Ann.wav";
System.Diagnostics.Process.Start("CMD.exe", cmd);