c#打开cmd.exe进程并执行多个命令

时间:2015-04-11 03:44:46

标签: c# windows cmd vpn

我希望能够打开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运行第一个命令后运行。一些研究让我看到了这段代码。我不确定这是否有效,因为我的目标是从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#以编程方式将其删除。

问候。

2 个答案:

答案 0 :(得分:3)

你可以做三件事来实现你想要的。最简单的方法是通过ProcessStartInfo设置流程的工作目录。这样,您只需执行命令即可启动VPN客户端。

第二个选项是重定向进程的输入和输出。 (也通过ProcessStartInfo完成)如果您需要向流程发送更多输入,或者想要检索刚刚启动的流程的输出,则需要执行此操作。

第三个选项是将两个命令与&符号组合在一起。使用&符号可使cmd.exe按顺序执行这两个命令(有关可用符号的概述,请参阅here)。使用此选项将产生如下命令:/c cd path & vpnclient

但是,因为您只想使用第一个选项更改进程的工作目录,使您的代码更具可读性。因为阅读代码的人不需要知道bash中的&符号就可以了解代码的作用。使用WorkingDirectoryMSDN)的ProcessStartInfoMSDN)属性更改工作区域。请参阅以下代码:

var processInfo = new ProcessStartInfo("cmd.exe", @"/c vpnclient connect user validuser pwd validpassword nocertpwd validconnectionentry ");
processInfo.UseShellExecute = false;
processInfo.WorkingDirectory = path;

答案 1 :(得分:0)

您可以使用&执行下一个命令,或&&仅在上一个命令成功时执行以下命令。

示例:

dir /b & cls

taskkill /f /im explorer.exe && start explorer