次のような一連のコマンドがあります。
C:
cd Project
testproj.exe
私のシステムは、これらのコマンドをリモート システムから 1 つずつ取得します。リモートシステムからコマンドを受信したら、cmd.exe の各コマンドを実行する必要があります。.NET を使用してこれらを実行する方法は?
また、testproj.exe の結果をリモート マシンに返す必要もあります。コマンドを実行した後に結果を取得する方法は?
Process.Start
cmd.exe を開き、StandardIn、StandardOut、および StandardError をフックします。次に、コマンドが入ってきたら、それを StandardIn に書き込み、戻り値として StandardOut/Error を読み取ります。全体で 15 LOC を超えてはなりません。
そうは言っても、Telnetサーバーをインストールするだけの方がおそらく簡単でしょう-それが本質的に複製しているように聞こえるからです....
var process = System.Diagnostics.Process.Start( "testproj.exe" );
process.WaitForExit();
var result = process.ExitCode;
これは、"C:" や "CD パス" などを実際には尊重しません。代わりに、一時フォルダーにバッチ ファイルを作成してから、バッチ ファイルを呼び出します。
System.Diagnostics.Processを見てください。stdout/stderr をどこかにリダイレクトして、出力を取得できます。
C:およびcd Project操作は、 SetCurrentDirectoryメソッドを使用してDirectoryクラスを使用して、起動アプリケーション内で実行できます。
次に、Processクラスを使用してtestproj.exe実行可能ファイルを起動します。