【发布时间】:2015-06-16 21:45:09
【问题描述】:
我希望能够从窗口打开 cmd 并执行两个命令。首先,我想导航到一个特定的目录,然后我可以从中运行第二个命令。运行单个命令非常简单,因为这就是我所要做的:
string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) + @"\Cisco Systems\VPN Client\";
Process process = new Process();
ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe", @"/c cd " + path );
process.StartInfo = processInfo;
process.Start();
但是我不确定添加第二个参数的方法,所以它在 cmd 运行第一个命令之后运行。一些研究使我找到了这个代码 sn-p。我不确定这是否有效,因为我的目标是从 cmd 启动 cisco vpn 客户端,而这似乎无法启动它。代码如下:
string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) + @"\Cisco Systems\VPN Client\";
Process process = new Process();
ProcessStartInfo processInfo = new ProcessStartInfo("cmd.exe", @"/c cd " + path + "-t vpnclient connect user validuser pwd validpassword nocertpwd validconnectionentry ");
process.StartInfo = processInfo;
process.Start();
我曾经使用凭据从 cmd 启动 vpn 客户端,只是为了确保它们有效并且可以正常工作,但我无法通过 C# 以编程方式将其关闭。
问候。
【问题讨论】:
-
/c之后的所有内容都是命令行指令。因此,您可以将其打印出来,然后在命令行中键入相同的内容,看看会发生什么,然后进行试验,直到它起作用为止。在这种情况下,您尝试使用-t选项运行cd;没有这样的选择。相反,请使用&在一行中包含多个命令。 -
此外,如果
UseShellExecute为假(可能即使它为真,尽管文档另有说明),您可以设置WorkingDirectory为新进程设置当前目录。这样一来,您根本不需要cd命令。 -
@HarryJohnston 这对我有用。如果您将其写为答案,那么我会将其标记为遇到类似情况的人的答案。