2009-07-13 15 views
0

C#コードを使用してBATファイルを実行します。C#コードでBATファイルを起動する方法

私はそれは、バッチファイルが、非常に次の秒停止を開始し、次のコードを使用する

Process aProcess = new Process(); 
aProcess = Process.Start(@"E:\IMP_DATA\PRC_Helper_uTest.bat"); 
aProcess.WaitForExit(24000); 
aProcess.Close(); 

を試みました。

私は何も見ることができません。

誰でもこの問題に関して私を助けることができますか?

UPDATE

実は私は、新しいコマンドプロンプトを起動し、その新しく作成されたコマンドプロンプトでバッチファイルを実行したいです。

これをどのように達成できますか?

答えて

3

.batファイルの最後にPAUSEを追加しますか?

+0

その仕事は、Nihkilでしたか? –

5

「aProcess.UseShellExecute = false;」を使用してシェルを起動しないようにプロセスを設定します。その後、

aProcess.RedirectStandardError = true; 
aProcess.RedirectStandardOutput = true; 
string Results = aProcess.StandardOutput.ReadToEnd(); 

を使用してストリームに出力をリダイレクトこれはあなたのバッチファイルが

+0

シェルを起動しないと、バッチがどのように読み込まれるのかわかりません。 –

+0

プロセスはバックグラウンドで実行されているので、出力が表示されないだけで、リダイレクトが使用されます。これは、自動化されたプロセスで便利です。 – RC1140

+0

しかしバッチファイルなので、EXEを実行する方法ではOSによって直接実行することはできません。代わりに、シェルを起動してバッチを解釈できるようにします。 –

0

は、バッチファイルが実行された後、コマンドプロンプトを開いたままにしますか示すであろう出力を返す必要がありますか?その場合は、バッチファイルを引数として "cmd.exe"を起動します。それ以外の場合は、バッチファイルの最後にpauseコマンドを挿入します。

よろしく

+0

私はそれを追加しましたが、私の質問を更新したので、私はbatファイルから新しいコマンドプロンプトを起動し、その新しく作成されたコマンドプロンプトでコマンドを実行する必要があります。 しかし、何が問題なのですか?新しいコマンドプロムトを開始するプログラムですが、.NETセルで実行する別のコマンドです。 コードとバットファイルを参照してください: バットは Xファイル: CDを\ syngoBASEの\ i586の-WinNT5.01 \デバッグ\ DoBin \ binに syngo.Common.Starter.exeが DIR 一時停止を-shell コード プロセスaProcess =新しいプロセス(); aProcess = Process.Start(@ "E:\ IMP_DATA \ Test.bat"); aProcess.WaitForExit(24000); aProcess.Close(); –

+0

Nikhil、バッチファイルが別のプロセスを開始した場合、最初のプロセスは2番目のプロセスが完了する前に戻ります。 –

1

、あなたの更新で書いたように、新しいコマンドプロンプトを起動し、このプロンプトでバッチファイルを起動します。しかし、あなたがしたことは、バッチファイルを開始することでした。

これを機能させるには、コマンドプロンプトを起動し、バッチファイルを実行する代わりにバッチファイルを実行します(時にはそれがとてもシンプルかもしれません;-))。

例:コマンドプロンプトのオプションについて

private void StartCmdWithBatch(string nameOfBatchFile) 
{ 
    if (!File.Exists(nameOfBatchFile)) 
     throw new FileNotFoundException(nameOfBatchFile); 

    string parameters = String.Format("/k \"{0}\"", nameOfBatchFile); 
    System.Diagnostics.Process.Start("cmd", parameters); 
} 

さらなる情報はcmd /?

0

により取得することができ、私はここにある2つのC#コードでこのbatファイルを使用:

@echo off 

color 0a 

mode 1000 

:a 

echo %random% %random% %random% %random% %random% %random% %random% %random% 

goto a 


Process aProcess = new Process(); 

aProcess = Process.Start(@"E:\IMP_DATA\PRC_Helper_uTest.bat"); 

aProcess.WaitForExit(24000); 

aProcess.Close(); 


aProcess.RedirectStandardError = true; 

aProcess.RedirectStandardOutput = true; 

string Results = aProcess.StandardOutput.ReadToEnd(); 

そして、それ完璧にうまくいった。

関連する問題