【问题标题】:Process.Start, Batch files and QuotingProcess.Start、批处理文件和报价
【发布时间】:2011-04-07 16:05:47
【问题描述】:

我写了一个BAT 脚本自动连接和断开宽带连接:

netsh mbn connect interface="Mobile Broadband Connection" connmode=name name="My Provider" 
netsh mbn disconnect interface="Mobile Broadband Connection"

当我单击BAT 脚本时,它工作正常,但是当我使用Process.Start 执行它时:

    var startInfo = new ProcessStartInfo
    {
        FileName = "cmd.exe",
        Arguments = "/c reconnect.bat",
        WindowStyle = ProcessWindowStyle.Minimized,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true
    };

    var process = new Process
    {
        StartInfo = startInfo
    };
    process.Start();

netsh 返回找不到 mbn 命令的错误。

在我使用BAT 文件之前,我直接启动了这些命令。他们在 shell 上运行良好,但在使用 Process.Start 时出现同样的错误。

为什么这会发生在我身上?

输出:

C:\Dev\NetworkAdapterTest\NetworkAdapterTest\bin\Debug>netsh mbn 连接接口=\"手机 Breitbandverbindung\" connmode=name name=\"A1 2\" 以下命令 未找到:mbn 连接 interface="Mobile Breitbandverbindung" connmode=name name="A1 2"。

C:\Dev\NetworkAdapterTest\NetworkAdapterTest\bin\Debug>netsh mbn 断开接口=\"手机 Breitbandverbindung\" 以下 找不到命令:mbn 断开连接 interface="Mobile Breitbandverbindung"

注意引用是如何真正连接的。当我直接启动命令时,我遇到了同样的问题。

当我使用 Visual Studio 2008 编译解决方案时,一切都按预期工作。

问题不再相关。

【问题讨论】:

  • 如果您在命令行中手动执行带有转义引号的命令,您是否会遇到同样的错误?
  • 如果我运行第一个命令(使用正确的引号),我不会收到任何错误。如果我按照错误消息中的说明运行命令,则会收到错误消息。
  • 我不是在问,如果你得到“an”错误,但如果你得到 same 错误......

标签: c# process batch-file quoting


【解决方案1】:

您的 arguments 变量的内容似乎没有多大意义。如果您的程序位于“C:\Temp”,它将是:“C:\Temp\/c reconnect.bat”。
如果 bat 文件与您的应用程序位于同一文件夹中,您可能需要使用以下代码:

var arguments = string.Format("/c \"{0}\"", 
                  Path.Combine(Application.StartupPath, "reconnect.bat"));

额外的引号,以防您的路径中有空格。

【讨论】:

  • 我将其更改为上面的编辑,但仍然遇到相同的问题。
【解决方案2】:

您是否尝试过直接启动批处理文件而不是使用“cmd.exe”?它应该无需通过 cmd.exe 即可工作。

我要检查的另一件事是您使用的是正确的路径。最简单的方法是将 Bat 与可执行文件放在同一目录中,或引用文件名中的完整路径。

Stack Overflow - how to execute a batch file from windows form

【讨论】:

  • 我尝试直接启动 bat 文件,但没有成功 - 仍然出现同样的错误。
猜你喜欢
  • 2019-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 2014-11-15
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多