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并在批处理文件中添加第三行

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