2017-03-22 8 views
-2

robocopyが動作していません。以下のコードがありますが、エラーは表示されません。Robocopyでデータをコピーしていない

  try 
      { 
      System.Diagnostics.Process p = new Process(); 

      p.StartInfo.Arguments = string.Format("/C ROBOCOPY {0} {1}", 
       sourceTextBox.Text , destinationTextBox.Text, "CopyFilesForm.exe"); 
      p.StartInfo.FileName = "CMD.EXE"; 

      p.StartInfo.CreateNoWindow = true; 
      p.StartInfo.UseShellExecute = false; 
      p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized; 
      p.Start(); 
      p.WaitForExit(); 
      if (p.HasExited) 
      { 
       MessageBox.Show("Copy Successful"); 
      } 
     } 

     catch 
     { 
      MessageBox.Show("Error. Please try closing the application and try again."); 
      throw; 
     } 
+0

出力をキャプチャできるようにrobocopyにログを追加してみてください( '/ LOG:c:\ temp \ robocopy.log') –

+0

また、私はFolderBrowserDialog fbd = new FolderBrowserDialog()を使用しています。選択したパスを取得し、この文字列をsourcetextおよびdestinationtextとして使用します。これが問題だろうか? – Nilay

+0

その出力も出力されません。 – Nilay

答えて

1

宛先パスにスペースがあると思います。引用符で両方の送信元と送信先のパスをカプセル化してみてください。

p.StartInfo.Arguments = string.Format("/C ROBOCOPY \"{0}\" \"{1}\"", 
      sourceTextBox.Text , destinationTextBox.Text, "CopyFilesForm.exe"); 

また、単に明快に、「CopyFilesForm.exe」引数は使用されませんが、私はそれだけでデバッグ残り物だと思うんですか?

+0

@ ""を使用して、文字列ソースと宛先パスを使用して動作させることができました。しかし、私は現在、テキストボックスを使用してソースと宛先を取得しようとしていますが、動作しません。私はFolderBrowserDialogを使用してソースと宛先を取得しています。また、私は現在ディレクトリをコピーしており、単一のファイルではありません。 – Nilay

+0

@Nilay:あなたのパスには名前にスペースがあるので、Micaelが正しいかもしれないと思うので、robocopyに渡すと引用符を付ける必要があります。このコードを試してみてください。 –

+0

こんにちはMicaelとRufus、はい!これは完璧に働いています。私はこれを考えなかった。ありがとうございました! – Nilay

関連する問題