【发布时间】: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