Любой способ держать окно внешней команды открытым во время Process.Start (..)?

у меня есть следующий код, который запускает файл bat. Затем файл bat запускает какой-то файл .exe, который что-то делает. Материал занимает около 5-10 секунд.

ProcessStartInfo start = new ProcessStartInfo
{
    Arguments = "\"" + newTargetFile + "\"" +
                " " +
                "\"" + originalFile.FullName + "\"",
    FileName = filename,
    WindowStyle = ProcessWindowStyle.Normal,
    CreateNoWindow = false,
    UseShellExecute = false
};

// Run the external process & wait for it to finish
using (Process proc = Process.Start(start))
{
    proc.WaitForExit();
}

То, что я пытаюсь сделать, это оставить командное окно открытым, даже после завершения процесса. Есть какой-либо способ сделать это?

В противном случае, я могу получить все выходные данные этого окна вместо моего отладчика, так что мне не нужно беспокоиться об этом окне?

веселит.

Ответы на вопрос(2)

чтобы оставить терминал открытым:

    System.Diagnostics.Process proc = new System.Diagnostics.Process();

    string path = System.IO.Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName;
    if (Environment.OSVersion.Version.Major >= 6)
    {
        path = System.IO.Directory.GetParent(path).ToString();
    }

    proc.StartInfo.WorkingDirectory = path;
    proc.StartInfo.FileName = "cmd.exe";
    proc.StartInfo.Arguments = "/k git --version";
    proc.Start();
Решение Вопроса

командного файла в качестве следующего аргумента, вы должны получить то, что вам нужно. Аргумент / k указывает Windows оставить интерпретатор cmd открытым, когда это будет сделано с тем, что вы скажете сделать следующим аргументом.

Конечно, вы также можете использовать свойство RedirectStandardOutput, но я думаю, что в конечном итоге это будет сложнее.

 Pure.Krome25 мая 2009 г., 06:56
веселит. Я также добавил 'pause' в конец файла .bat :), что также помогло: P

Ваш ответ на вопрос