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 コンポーネントに関連付けます。

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を使用して新しいProcessオブジェクトを作成しStart()、それを呼び出して、例のように出力を読み取ります。

于 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 に答える