2

フォルダーを XCOPY するために .bat ファイルを呼び出しています。ファイル名と宛先をバッチファイルに渡す方法はありますか?

私の.batファイル

XCOPY %1 %2
pause

.bat を呼び出すために使用しているコードは次のとおりです。

process.Start(@"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat");

私はこのコードを試しました

process.Start(@"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat" , copyfrom copyto);

コンプをシャットダウンするために以前にそれを使用したことがありますが、これでは機能しません。

ありがとう

アップデート

process.StartInfo.FileName = @"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat";
process.StartInfo.Arguments = copyFrom.ToString();
process.StartInfo.Arguments = copyTo.ToString();
process.Start();

それは私が使用しているコードですが、機能しません。XCOPY画面からこれを取得しています: ここに画像の説明を入力

したがって、完全なファイルパスを取得しているようには見えません。copyto と copyfrom は、パスを含む変数です。

アップデート

azhrei のコードを使用する:

String batch = @"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat";
String src = @"C:\Tricky File Path\Is Here\test1.txt";
String dst = @"C:\And\Goes Here\test2.txt";  
String batchCmd = String.Format("\"{0}\" \"{1}\" \"{2}\"", batch, src, dst);

process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = String.Format("/k \"echo {0}\"", batchCmd);

process.Start();

私はこの出力を得ています: ここに画像の説明を入力

実際にはファイルをコピーしていません。

4

4 に答える 4

1

Argumentsプロパティを使用できます

Process proce = new Process();
proce.StartInfo.FileName = "yourfile.exe";
proce.StartInfo.Arguments =  ..;
proce.Start();

記事 : http://www.c-sharpcorner.com/UploadFile/jawedmd/xcopy-using-C-Sharp-to-copy-filesfolders/

于 2012-08-20T15:38:05.360 に答える
1

これに置き換えて、

var process = new Process();
process.StartInfo.FileName = @"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat";
process.StartInfo.Arguments = // my arguments
process.Start();

より良いオプションは、XCOPY.BAT ファイルが行っていることを同等の呼び出しで置き換えることですSystem.IO(その場合、エラー処理が行われます)。

于 2012-08-20T15:39:42.490 に答える
1

バッチファイルを開始しています-使用する必要がありますcmd.exe

"各引数を(引数にスペースが含まれる場合に必要)で囲みます。

  String batch = @"C:\Documents and Settings\cmolloy\My Documents\Test\XCOPY.bat";
  String src = @"C:\Tricky File Path\Is Here\test1.txt";
  String dst = @"C:\And\Goes Here\test2.txt";  
  String batchCmd = String.Format("\"{0}\" \"{1}\" \"{2}\"", batch, src, dst);

  process.StartInfo.FileName = "cmd.exe";
  process.StartInfo.Arguments = String.Format("/k \"{0}\"", batchCmd);

  process.Start();

バッチ ファイルが文字通り xcopy で他に何もない場合cmd.exexcopy.exe/k + batch.

于 2012-08-20T15:43:26.457 に答える
0

パラメータを渡しますか?

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true

于 2012-08-20T15:39:52.390 に答える