2016-10-21 9 views
0

を取得し、私は、単純なバッチファイルがあります。実行バッチファイルのxcopyと結果

xcopy source1 dest1 
xcopy source2 dest2 

を私は、.NETアプリケーションからこれを実行するのが好き、そしてプロセスの結果になるだろう(xcopyが成功すれば0を返し、失敗した場合は1を返します)、成功したかどうか(両方のファイルがコピーされたかどうか)をチェックします。どうやってやるの?

おかげ

+0

まだ非常に基本的な質問:)私はGoogleが答えを持っていることを意味し、そこにはSOの答えがたくさんあります。 –

+0

[cmd.exeを呼び出さずに[system()(c#)の重複可能性があります](http://stackoverflow.com/questions/2794386/system-to-c-sharp-without-calling-cmd-exe) –

+1

http://stackoverflow.com/questions/4251694/how-to-start-a-external-executable-from-c-sharp-and-get-the-exit-code-when-the-p(これは実際に示すようにどのようにexitcodeを取得する) – sgmoore

答えて

2

私は 出力

  • を受信するための方法
  • がどのように私は結果
  • に解析しない外部コマンドを実行するにはどうすればよいこの

    1. における3つの質問があります。

      1:DOSコマンドを実行するのはかなり簡単です:

      System.Diagnostics.Process.Start("xcopy","source1 dest1"); 
      

      2:出力を取得する2つの方法があります。最初はあなたのコマンドを "xcopy source1 dest1 >output.txt"に変更し、後でtxtファイルを読むことです。第二は、異なるスレッドを実行することです:

      var proc = new Process { 
          StartInfo = new ProcessStartInfo { 
           FileName = "xcopy", 
           Arguments = "source1 dest1", 
           RedirectStandardOutput = true 
          } 
      }; 
      proc.Start(); 
      string response=string.Empty; 
      while (!proc.StandardOutput.EndOfStream) { 
          response += proc.StandardOutput.ReadLine(); 
      } 
      

      responseは、あなたのコピーコマンドの応答が含まれています。これで戻り値(3)を解析するだけです。

      最後の部分で問題が発生した場合は、SOを検索するか、新しい質問を書き込みます。

    +0

    ありがとう、それは素晴らしいですが、whileループは決して私のために停止しません:\ –

    +1

    それは "ファイルが既に存在する"問題でした。今それは動作します、もう一度ありがとう! –

    +0

    あなたが必要とするものがすべてExitCodeであれば、過度に複雑に思えます。 – sgmoore

    関連する問題