我编写了一个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:\开发\ NetworkAdapterTest \ NetworkAdapterTest \ BIN \调试和GT; netsh的 mbn connect interface = \“移动 Breitbandverbindung \“connmode = name name = \“A1 2 \”以下命令 没找到:mbn connect interface =“Mobile Breitbandverbindung” connmode = name name =“A1 2”。
C:\开发\ NetworkAdapterTest \ NetworkAdapterTest \ BIN \调试和GT; netsh的 mbn disconnect interface = \“移动 Breitbandverbindung“以下 找不到命令:mbn disconnect interface =“Mobile Breitbandverbindung”
注意报价是如何真正接线的。当我直接启动命令时,我遇到了同样的问题。
当我使用Visual Studio 2008编译解决方案时,一切都按预期工作。
问题不再相关。
答案 0 :(得分:2)
你的参数变量的内容似乎没有多大意义。如果您的程序位于“C:\ Temp”中,它将是:“C:\ Temp \ / c reconnect.bat”。
如果bat文件与应用程序位于同一文件夹中,则可能需要使用以下代码:
var arguments = string.Format("/c \"{0}\"",
Path.Combine(Application.StartupPath, "reconnect.bat"));
额外的引号,以防路径中包含空格。
答案 1 :(得分:1)
您是否尝试直接启动批处理文件,而不是使用“cmd.exe”?它应该工作,而不必通过cmd.exe。
我要检查的另一件事是你正在使用正确的路径。最简单的方法是将Bat与可执行文件放在同一目录中,或者引用文件名中的完整路径。
Stack Overflow - how to execute a batch file from windows form