C# 进程。启动、批处理文件和报价
我编写了一个自动连接和断开宽带连接的C# 进程。启动、批处理文件和报价,c#,process,batch-file,quoting,C#,Process,Batch File,Quoting,我编写了一个自动连接和断开宽带连接的BAT脚本: netsh mbn connect interface="Mobile Broadband Connection" connmode=name name="My Provider" netsh mbn disconnect interface="Mobile Broadband Connection" 当我单击BAT脚本时,它工作正常,但当我使用过程执行它时。启动: var startInfo = new ProcessStartIn
BAT
脚本:
netsh mbn connect interface="Mobile Broadband Connection" connmode=name name="My Provider"
netsh mbn disconnect interface="Mobile Broadband Connection"
当我单击BAT
脚本时,它工作正常,但当我使用过程执行它时。启动:
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=名称
名称=\“A1 2\”以下命令
找不到:mbn connect
interface=“Mobile Breitbandverbindung”
connmode=name=“A1 2”
C:\Dev\NetworkAdapterTest\NetworkAdapterTest\bin\Debug>netsh
mbn断开连接接口=\“移动
Breitbandverbindung \“以下内容
未找到命令:mbn disconnect
interface=“Mobile Breitbandverbindung”
注意引用是如何连接的。当我直接启动命令时,我遇到了同样的问题
当我使用VisualStudio2008编译解决方案时,一切都按预期进行
问题不再相关。您的arguments变量的内容似乎没有多大意义。如果您的程序位于“C:\Temp”中,它将是:“C:\Temp\/C reconnect.bat”。
如果bat文件与应用程序位于同一文件夹中,则可能需要使用以下代码:
var arguments = string.Format("/c \"{0}\"",
Path.Combine(Application.StartupPath, "reconnect.bat"));
额外的引号,以防路径中有空格。您是否尝试过直接启动批处理文件而不是使用“cmd.exe”?它不需要通过cmd.exe就能工作
我要检查的另一件事是您使用的路径是否正确。最简单的方法是将Bat与可执行文件放在同一目录中,或者引用文件名中的完整路径
我将其更改为上面的编辑,但仍然存在相同的问题。如果在命令行中手动使用转义引号执行命令,是否会出现相同的错误?如果运行第一个命令(使用正确的引号),则不会出现错误。如果我按照错误消息中所写的方式运行命令,我会得到一个错误。我不是问,如果你得到“一个”错误,但是如果你得到相同的错误…我试图直接启动bat文件,但没有成功-仍然得到相同的错误。