2011-01-10 18 views
3

基本的にサイトからファイルをダウンロードするバッチファイルがあるか、ファイルが使用できないというエラーメッセージが返されます。私はC#(SSISスクリプトコンポーネント)でこの.batファイルを実行し、変数に(ファイルがダウンロードされている場合)変数にファイル名を保存するか、変数にエラーメッセージを割り当てます。C#でバッチファイルを実行する

Process.Startを使用してバッチファイルを実行し、事前

+2

なぜSSISで直接ダウンロードしないのですか?要件です –

+0

... :( –

答えて

0

あなたは/ CオプションでのCmd.exeを実行するためにSystem.Diagnostics.Processを使用することができます。基本的にバッチファイルの名前を指定します。プロセスの作成とスタンダード入出力のキャプチャを簡単にするために、私は以前にまとめたProcessRunnerクラスを見ることをお勧めします。少なくともこの記事はHow to use System.Diagnostics.Process correctlyを読んではいけない。

さらに、いくつかの異なる種類のWindows OSスクリプトファイルを実行するラッパーを作成する同じライブラリ内のScriptRunnerクラスを参照することもできます。

+0

私はこれを試していただきありがとうございます... –

10

でいただきありがとうございます。返されたProcessオブジェクトのStandardErrorおよびStandardOutputストリームを読み取ることで、プロセス出力をテキストとして取得できます。 RedirectStandardOutputプロパティをtrueに設定する必要があります。ここで

は、MSDNからの例です:

Process p = new Process(); 
// Redirect the output stream of the child process. 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.FileName = "yourbatchfile.bat"; 
p.Start(); 
// Read the output stream first and then wait. 
string output = p.StandardOutput.ReadToEnd(); 
p.WaitForExit(); 
+0

ProcessStartInfo startInfo; プロセスbatchExecute; startInfo =新ProcessStartInfo( "C:\テスト\のTEST.BAT" @); startInfo.WorkingDirectory = @ "C:\テスト" ; startInfo.CreateNoWindow = TRUE; startInfo.WindowStyle = ProcessWindowStyle.Hidden; startInfo.UseShellExecute = TRUE; batchExecute =新しいプロセス(); batchExecute.StartInfo = startInfo; batchExecute.Start(); batchExecute .WaitForExit();私は休暇中のコードを使用していますが、出力を変数に格納する方法は? –

+0

@ramesh、私は例を追加しました。出力テキストを文字列として読み取って解析する必要があります。プロセス_might_は意味のあるエラーコードを返します。このコードは 'p.ExitCode'を見ることで確認できます。 – driis

+0

問題を解決していただきありがとうございました:) –

関連する問題