Как создать приложение C #, которое открывает «cmd.exe» в другом окне? - PullRequest
0 голосов
/ 12 октября 2018

Что я хотел бы сделать

Я хотел бы создать простое приложение C #, которое создает объект Process (дочерний процесс приложения), который запускает cmd.exeи внутри этой оболочки выполните команду echo "Hello World!" (или любую произвольную строку, указанную мной до компиляции приложения).Приложение C # при сборке и запуске создает и оставляет оболочку в этом состоянии:

Desired Window

Попытки

Я искал stackoverflow и 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 (для дочернего процесса) никогда не появляется (если я установил RedirectStandardOutput = false), либо вывод дочернего процесса записывается в cmd родителяокно.

1 Ответ

0 голосов
/ 12 октября 2018

Попробуйте это:

Process.Start("cmd.exe", "/k ECHO hello Juan!");

Это запустит командное окно, выполнит оператор ECHO и оставит окно открытым.

Не стесняйтесь использовать экземпляр ProcessStartInfo какпараметр, если вам нужна дополнительная настройка.

Если вы запустите cmd /? в командной строке, вы можете увидеть дополнительную информацию о переключателях:

/ C Выполняет указанную командупо строке и затем завершается

/ K Выполняет команду, указанную в строке, но остается

...