2017-02-07 5 views
1

私は現在、私が書いたbashスクリプトをC#に「変換」しようとしています。 このスクリプトは、シェルでプログラムを起動してから、このシェルでいくつかのコマンドを実行し、次のようになります。引数とC#の複数のコマンドで.exeを実行しています

cd /$MYPATH 
./executible -s << EOF 
start_source_probe -hardware_name "USB" -device_name "@1: EP3C(10|5)" 
write_source_data -instance_index 0 -value "11111" 
write_source_data -instance_index 0 -value "10111" 
write_source_data -instance_index 0 -value "00111" 
exit 
EOF 

今私は、Visual Studio C#を使用して同じことをしたいと思います。私の試みは、このようになります瞬間 :(コードでそれを「//」で)アクティブにコメントを

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.WorkingDirectory = "pathToExe\\"; 
startInfo.FileName= "executible.exe"; 
startInfo.Arguments= "-s"; 
//startInfo.UseShellExecute = false; 
//startInfo.RedirectStandardInput = true; 
Process proc = new Process(); 
proc.StartInfo = startInfo; 
proc.Start(); 
//StreamWriter myStreamWriter = proc.StandardInput; 
//Console.WriteLine("start_source_probe - hardware_name \"USB\" -device_name \"@1: EP3C(10|5)\""); 
//Console.WriteLine("write_source_data -instance_index 0 -value \"11111\""); 
proc.WaitForExit(); 

私は(シェルの略-s)シェルを開くために管理しますが、どのように私、私は疑問に思いますこのシェルでコマンドを追加実行することができます。 私は "誰かが引数を追加する方法を私に言うことができる場合、私はそれをお願い申し上げます(限り、先の出力は、私が推測するに異なるので、私はシェルを起動していないですと)この

const string strCmdText = "/C command1&command2"; 
Process.Start("CMD.exe", strCmdText); 

ようなもので、複数のコマンドを実行するために管理-s "を実行し、開始したプロセスでコマンドを実行します。

+0

cmd.exeを使って複数のコマンドを実行するのは難しいです。 .cmdファイルにコマンドを書き出して実行する方が良いでしょう。 .cmdファイルには "通常の"バッチ構文があります。 – Clay

答えて

1

私は私があなたの質問を理解しなかったが、あなたは、C#コードの外にバッチファイルを作成し、次のようなあなたのC#のコードから呼び出すことができるかどうかわからない:

System.Diagnostics.ProcessStartInfo ProcStartInfo = new System.Diagnostics.ProcessStartInfo("cmd"); 
ProcStartInfo.RedirectStandardOutput = true; 
ProcStartInfo.UseShellExecute = false; 
ProcStartInfo.CreateNoWindow = false; 
ProcStartInfo.RedirectStandardError = true; 
System.Diagnostics.Process MyProcess = new System.Diagnostics.Process(); 
ProcStartInfo.Arguments = "/c start /wait batch.bat "; 
MyProcess.StartInfo = ProcStartInfo; 
MyProcess.Start(); 
MyProcess.WaitForExit(); 

私はあなたの/waitを追加しましたあなたのバッチが完了するのを待って、C#コードの実行を追求します。

+0

バッチスクリプト内の "bash"スクリプトで "<< EOF ......"のようなここの文書を追加する方法や、同じ結果を持つものを作る方法を教えてもらえますか? – Martin

+0

私はあなたの質問を理解していませんでした。「ここの文書をバッチスクリプトの中に入れてください」という意味はどうですか? –

+0

はもう問題ありません。私はそれを行う方法を考え出した。 "タイプsometext.txt | myexe.exe -s"が役に立ちました。あなたの答えはThx! – Martin

関連する問題