C# 使用C中的参数运行批处理文件#
我有一个像这样的批处理文件C# 使用C中的参数运行批处理文件#,c#,batch-file,arguments,xcopy,C#,Batch File,Arguments,Xcopy,我有一个像这样的批处理文件 @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 {
@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();
我希望这会将源文件复制到目标位置。但什么也没发生。我的控制台窗口也没有停留足够的时间,以便我可以看到错误。任何人都可以指导实现这一目标。我是批处理文件的新手
编辑
通过在批处理文件末尾添加暂停
。能够重现错误。将错误获取为
Files not found - Program
直接运行批处理文件可以很好地工作。刚才注意到……当源路径有空格时……我收到错误信息请重试
string MyBatchFile = @"C:\MybatchFile.bat";
string _sourcePath = @"C:\FolderToCopy\*.*";
string _tempTargetPath = @"C:\TargetFolder\";
i、 e.将*.*
添加到源路径
并在批处理文件中添加第三行pause
@echo off
copy /e %1 %2
pause
.bat文件是一个文本文件,为了执行它,您应该启动cmd进程。 这样开始:
System.Diagnostics.Process.Start("cmd.exe", "/c yourbatch.bat");
随后可能会有更多的论据。在没有c#的情况下,在cmd窗口或运行对话框中尝试此操作。引用参数如何
Arguments = String.Format("\"{0}\" \"{1}\"", _sourcePath, _tempTargetPath) …
bat
文件是使用cmd.exe
处理的脚本。只需尝试使用/C
键运行cmd.exe
。您可以在批处理文件的末尾添加一个pause
命令,然后它将等待您在退出前按键。我需要通过C应用程序运行它。你的意思是说……process.StartInfo.FileName=@“cmd.exe/c”+MyBatchFile
?@lyubmyrshaydarivprocess
如果文件名是文件而不是程序,则使用默认程序。@rapsaland我想是这样,因为很难相信批处理文件可以被视为独立的进程。如果我错了,请参阅默认值的注释。谢谢…..由于未找到文件而导致错误-程序。在sourcepath更改的情况下编辑了我的帖子。这可能是由于路径的原因-源文件夹中是否有任何文件(您确实需要*.
执行xcopy命令)-我在这里运行它。我在源路径中有文件。直接运行批处理文件可以很好地工作。刚才注意到……当源路径有空格时……我得到的是带有空格的错误路径需要用“’来包装,或者使用DOS 8字符路径。