【发布时间】:2013-01-08 00:34:18
【问题描述】:
我有一个这样的批处理文件
@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
直接运行批处理文件可以正常工作。刚刚注意到......当源路径有任何空格时......我收到错误
【问题讨论】:
-
bat文件是用cmd.exe处理的脚本。只需尝试使用/C键运行cmd.exe。 -
您可以在批处理文件的末尾添加
pause命令,然后它会等待您按键退出 -
我需要通过 C# 应用程序运行它。你的意思是说....
process.StartInfo.FileName = @"cmd.exe /c " + MyBatchFile?? -
@LyubomyrShaydariv
Process如果文件名是文件而不是程序,则使用默认程序。 -
@rapsalands 我猜是这样,因为很难相信批处理文件可以被视为一个独立的进程。如果我错了,请参阅 Default 的评论。
标签: c# batch-file arguments xcopy