Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C中的参数运行批处理文件#_C#_Batch File_Arguments_Xcopy - Fatal编程技术网

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
?@lyubmyrshaydariv
process
如果文件名是文件而不是程序,则使用默认程序。@rapsaland我想是这样,因为很难相信批处理文件可以被视为独立的进程。如果我错了,请参阅默认值的注释。谢谢…..由于未找到文件而导致错误-程序。在sourcepath更改的情况下编辑了我的帖子。这可能是由于路径的原因-源文件夹中是否有任何文件(您确实需要
*.
执行xcopy命令)-我在这里运行它。我在源路径中有文件。直接运行批处理文件可以很好地工作。刚才注意到……当源路径有空格时……我得到的是带有空格的错误路径需要用“’来包装,或者使用DOS 8字符路径。