我想做什么
我想创建一个简单的C#应用程序,该应用程序创建一个运行Process
的{{1}}对象(该应用程序的子进程),并在该Shell中执行命令cmd.exe
(或我在编译应用程序之前指定的任何任意字符串)。 C#应用程序在构建和运行时会创建并保持外壳处于这种状态:
尝试
我已经搜索了stackoverflow和MSDN的示例,但是很难找到为echo "Hello World!"
,Process
设置的正确选项。我特别尝试过:
ProcessStartInfo
,但是第二个cmd窗口(对于子进程)永远不会出现(如果我设置了using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
/*
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "echo helloworld!";
string strCmdText;
process.StartInfo = startInfo;
process.Start();
*/
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = @"cmd.exe", // iexplorer.exe opened up ie!
Arguments = "",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = false,
WorkingDirectory = @"C:\Users\mtran\Desktop\ConsoleApp1",
WindowStyle = ProcessWindowStyle.Normal
}
};
proc.Start();
}
}
}
),或者子进程的输出被写入父进程的cmd窗口。
答案 0 :(得分:1)
尝试一下:
Process.Start("cmd.exe", "/k ECHO hello Juan!");
它将启动命令窗口,执行ECHO
语句并保持窗口打开。
如果需要其他配置,可以随时使用ProcessStartInfo
实例作为参数。
如果在命令提示符下运行cmd /?
,则可以看到有关开关的其他信息:
/ C执行由字符串指定的命令,然后 终止
/ K执行由字符串指定的命令,但仍保留