如何启动控制台应用程序并防止它在结束时关闭?

时间:2012-01-12 13:54:29

标签: .net console processstartinfo

我从.NET应用程序启动shell脚本(.cmd)。我希望控制台窗口在脚本完成后保持打开状态,以便我可以检查是否有任何错误。我尝试使用cmd.exe /K:my.cmd,但由于某种原因无效(脚本无法执行)。即使是一个简单的" dir"命令不起作用。还有其他想法吗?

为了证明这一点:

System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo()
{
    Arguments = "/K:dir",
    ErrorDialog = true,
    FileName = "cmd.exe",
    WorkingDirectory = @"C:\"
});

给我这个:

C:\>

添加了说明:我的应用程序(启动脚本的应用程序)是 Windows窗体应用程序。执行上面的代码会打开一个新的控制台窗口(应该如此)。我希望新的控制台窗口保持打开状态。另外,我无法修改脚本。它是一个自动构建脚本,它可以终止。

4 个答案:

答案 0 :(得分:2)

我不知道这是否是整个问题,但如果你运行cmd /K:dir,则不会运行任何内容。使用空格而不是冒号使它对我有用。

即,cmd /K dir


还值得注意的是,您可以在运行对话框中测试这些命令。在任何最近的Windows版本中,这可以通过按住 Win 并按 R 来完成。

答案 1 :(得分:1)

您可以将命令放在批处理(.bat)文件中,并使批处理文件中的最后一个命令“暂停”(不带引号)。然后,不是执行cmd,而是执行批处理文件。

样本批处理文件 - test.bat

DIR 暂停

您还可以将结果输出到文本文件,然后在应用程序中显示文本文件。

DIR >results.txt

答案 2 :(得分:1)

从示例中删除冒号:

System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo()
{
  Arguments = "/K dir",
  ErrorDialog = true,
  FileName = "cmd.exe",
  WorkingDirectory = @"C:\"
});

答案 3 :(得分:0)

我会将错误记录到文件而不是保持窗口打开。 保持.net控制台窗口打开添加

Console.ReadLine();

到最后,这将要求用户按Enter继续。您也可以使用Console.ReadKey()来使用任何密钥

如果要保持Process窗口打开,则命令为pause