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
我希望能够打开 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