我希望能够打开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#以编程方式将其删除。
问候。
答案 0 :(得分:3)
你可以做三件事来实现你想要的。最简单的方法是通过ProcessStartInfo
设置流程的工作目录。这样,您只需执行命令即可启动VPN客户端。
第二个选项是重定向进程的输入和输出。 (也通过ProcessStartInfo
完成)如果您需要向流程发送更多输入,或者想要检索刚刚启动的流程的输出,则需要执行此操作。
第三个选项是将两个命令与&
符号组合在一起。使用&
符号可使cmd.exe按顺序执行这两个命令(有关可用符号的概述,请参阅here)。使用此选项将产生如下命令:/c cd path & vpnclient
。
但是,因为您只想使用第一个选项更改进程的工作目录,使您的代码更具可读性。因为阅读代码的人不需要知道bash中的&
符号就可以了解代码的作用。使用WorkingDirectory
(MSDN)的ProcessStartInfo
(MSDN)属性更改工作区域。请参阅以下代码:
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