我从.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窗体应用程序。执行上面的代码会打开一个新的控制台窗口(应该如此)。我希望新的控制台窗口保持打开状态。另外,我无法修改脚本。它是一个自动构建脚本,它可以终止。
答案 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