私はこのようなバッチファイルを持っています
@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
バッチファイルを直接実行することは問題なく機能します。ちょうど今気づいた......ソースパスにスペースがあるとき....エラーが発生しています
議論を引用するのはどうですか?
Arguments = String.Format("\"{0}\" \"{1}\"", _sourcePath, _tempTargetPath) …
.batファイルはテキストファイルです。実行するには、cmdプロセスを開始する必要があります。このように開始します。
System.Diagnostics.Process.Start("cmd.exe", "/c yourbatch.bat");
追加の議論が続くかもしれません。 cmdウィンドウ、または実行ダイアログで、c#なしでこれを試してください。
試してみてください
string MyBatchFile = @"C:\MybatchFile.bat";
string _sourcePath = @"C:\FolderToCopy\*.*";
string _tempTargetPath = @"C:\TargetFolder\";
つまり、ソースパスに*.*
を追加します
3行目pause
をバッチファイルに追加します
@echo off
copy /e %1 %2
pause