C# アプリケーションから複数の CMD コマンドを実行したい。
cmd のコマンドは、「C:\Users\Sara Mamdouh\Desktop\New folder> hvite -T 01 -C hcon.con -w net dict hmm_list Ann.wav」のようなものです。
私の質問は、C# アプリケーションからこのコマンドを呼び出し、結果を文字列で受け取る方法です。
まず、これを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();
クラスのドキュメントを読んでください。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);
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()
、それを呼び出して、例のように出力を読み取ります。
var cmd = @"hvite -T 01 -C hcon.con -w net dict hmm_list Ann.wav";
System.Diagnostics.Process.Start("CMD.exe", cmd);