10

私はこのようなバッチファイルを持っています

@echo off
xcopy /e %1 %2

私は次のように私のC#コードを持っています:

string MyBatchFile = @"C:\Program Files (x86)\MybatchFile.bat";
string _sourcePath = @"C:\FolderToCopy";
string _tempTargetPath = @"C:\TargetFolder\";

var process = new Process { 
                   StartInfo = { 
                      Arguments = string.Format("{0} {1}",
                                                _sourcePath,
                                                _tempTargetPath) 
                                } 
                          };
process.StartInfo.FileName = MyBatchFile;
bool b = process.Start();

これにより、ソースファイルがターゲットの場所にコピーされると思います。しかし、何も起こりません。また、コンソールウィンドウが十分な時間表示されないため、エラーが表示されます。誰もがこれを達成するために導くことができますか?私はバッチファイル処理の初心者です。

編集

pauseバッチファイルの最後にを追加します。エラーを再現できます。エラーを取得する

Files not found - Program

バッチファイルを直接実行すると正常に機能します。ちょうど今気づいた......ソースパスにスペースがあるとき....エラーが発生している

4

3 に答える 3

14

議論を引用するのはどうですか?

Arguments = String.Format("\"{0}\" \"{1}\"", _sourcePath, _tempTargetPath) …
于 2013-01-24T10:10:16.743 に答える
6

.batファイルはテキストファイルです。実行するには、cmdプロセスを開始する必要があります。次のように開始します。

System.Diagnostics.Process.Start("cmd.exe", "/c yourbatch.bat");

追加の引数が続く場合があります。cmdウィンドウ、または実行ダイアログで、c#なしでこれを試してください。

于 2013-01-24T10:09:23.013 に答える
3

試す

string MyBatchFile = @"C:\MybatchFile.bat";
string _sourcePath = @"C:\FolderToCopy\*.*";
string _tempTargetPath = @"C:\TargetFolder\";

*.*つまり、ソースパスに追加します

pauseバッチファイルに3行目を追加します

@echo off
copy /e %1 %2
pause
于 2013-01-24T09:47:22.763 に答える