繁体   English   中英

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

[英]c# open cmd.exe process and Execute multiple commands

我希望能够打开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#将其关闭。

问候。

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

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

第三个选项是将两个命令与&符号组合在一起。 使用&符号可使cmd.exe依次执行两个命令(有关可用符号的概述,请参见此处 )。 使用此选项将导致如下命令: /c cd path & vpnclient

但是,因为您只想使用第一个选项来更改流程的工作目录,这会使您的代码更具可读性。 因为阅读您的代码的人无需知道bash中的&符号即可了解您的代码的用途。 更改工作目录是通过ProcessStartInfoMSDN )的WorkingDirectoryMSDN )属性完成的。 请参见以下代码:

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

仅当前一个命令成功执行时,才可以使用&执行下一个命令或&&执行下一个命令。

例子:

dir /b & cls

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM