【问题标题】:Running batch file with arguments from C#使用来自 C# 的参数运行批处理文件
【发布时间】: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


【解决方案1】:

引用论证呢?

Arguments = String.Format("\"{0}\" \"{1}\"", _sourcePath, _tempTargetPath) …

【讨论】:

    【解决方案2】:

    .bat 文件是一个文本文件,为了执行它,你应该启动 cmd 进程。 像这样开始:

    System.Diagnostics.Process.Start("cmd.exe", "/c yourbatch.bat");
    

    可能会出现其他参数。在不使用 c#、在 cmd 窗口或运行对话框中尝试此操作。

    【讨论】:

      【解决方案3】:

      试试

      string MyBatchFile = @"C:\MybatchFile.bat";
      string _sourcePath = @"C:\FolderToCopy\*.*";
      string _tempTargetPath = @"C:\TargetFolder\";
      

      即将*.*添加到源路径

      并在批处理文件中添加第三行 pause

      @echo off
      copy /e %1 %2
      pause
      

      【讨论】:

      • 谢谢.....得到错误Files not found - Program。修改了我的帖子,更改了源路径。
      • 这可能与路径有关——源文件夹中是否有任何文件(xcopy 命令确实需要*.*)——我在这里运行它。
      • 我在源路径中有文件。直接运行批处理文件可以正常工作。刚刚注意到......当源路径有任何空格时......我收到错误
      • 带空格的路径需要用 "'s 包裹或使用 DOS 8 字符路径。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 2021-11-16
      • 1970-01-01
      相关资源
      最近更新 更多