如何创建在另一个 window 中打开 "cmd.exe" 的 C# 应用程序?
How to create a C# application that opens "cmd.exe" in another window?
我想做什么
我想创建一个简单的 C# 应用程序,它创建一个运行 cmd.exe
的 Process
对象(应用程序的子进程),并在该 shell 中执行命令echo "Hello World!"
(或我在编译应用程序之前指定的任意字符串)。 C# 应用程序在构建 运行 时创建 shell 并保持此状态:
尝试次数
我在 Whosebug 和 MSDN 上搜索了示例,但很难找到为 Process
、ProcessStartInfo
设置的正确选项。特别是,我试过:
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 window(对于子进程)从未出现(如果我设置 RedirectStandardOutput = false
)或者子进程的输出被写入父进程的 cmd window.
试试这个:
Process.Start("cmd.exe", "/k ECHO hello Juan!");
它将启动命令 window,执行 ECHO
语句并保持 window 打开。
如果您需要额外配置,请随意使用 ProcessStartInfo
实例作为参数。
如果您 运行 cmd /?
在命令提示符下,您可以看到有关开关的其他信息:
/C Carries out the command specified by string and then
terminates
/K Carries out the command specified by string but remains
我想做什么
我想创建一个简单的 C# 应用程序,它创建一个运行 cmd.exe
的 Process
对象(应用程序的子进程),并在该 shell 中执行命令echo "Hello World!"
(或我在编译应用程序之前指定的任意字符串)。 C# 应用程序在构建 运行 时创建 shell 并保持此状态:
尝试次数
我在 Whosebug 和 MSDN 上搜索了示例,但很难找到为 Process
、ProcessStartInfo
设置的正确选项。特别是,我试过:
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 window(对于子进程)从未出现(如果我设置 RedirectStandardOutput = false
)或者子进程的输出被写入父进程的 cmd window.
试试这个:
Process.Start("cmd.exe", "/k ECHO hello Juan!");
它将启动命令 window,执行 ECHO
语句并保持 window 打开。
如果您需要额外配置,请随意使用 ProcessStartInfo
实例作为参数。
如果您 运行 cmd /?
在命令提示符下,您可以看到有关开关的其他信息:
/C Carries out the command specified by string and then terminates
/K Carries out the command specified by string but remains