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

c# open cmd.exe process and Execute multiple commands

我希望能够打开 cmd 并从 window 执行两个命令。首先,我想导航到一个特定的目录,然后我可以从中 运行 第二个命令。 运行 一条命令非常简单,因为这就是我所要做的:

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 运行s 之后 运行s。一些研究使我找到了这个代码片段。我不确定这是否有效,因为我的目标是从 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 依次执行这两个命令(有关可用符号的概述,请参阅 here)。使用此选项将产生如下命令:/c cd path & vpnclient.

但是因为您只想更改进程的工作目录,所以使用第一个选项会使您的代码更具可读性。因为阅读你的代码的人不需要知道 bash 中的 & 符号就可以理解你的代码做了什么。使用 WorkingDirectory (MSDN) property of ProcessStartInfo (MSDN) 更改工作目录。见以下代码:

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