Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何启动控制台应用程序并防止其在最后关闭?_.net_Console_Processstartinfo - Fatal编程技术网

.net 如何启动控制台应用程序并防止其在最后关闭?

.net 如何启动控制台应用程序并防止其在最后关闭?,.net,console,processstartinfo,.net,Console,Processstartinfo,我正在从.NET应用程序启动一个shell脚本(.cmd)。我希望在脚本完成后控制台窗口保持打开状态,以便检查是否有任何错误。我正在尝试使用cmd.exe/K:my.cmd,但由于某些原因,该脚本无法执行。即使是一个简单的“dir”命令也不起作用。还有其他想法吗 为了证明这一点: System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo() { Arguments = "/K:dir", Er

我正在从.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窗体应用程序。执行上述代码将打开一个新的控制台窗口(应该是这样的)。我希望新的控制台窗口保持打开状态。此外,我无法修改脚本。这是一个自动生成脚本,必须终止。

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

示例批处理文件-test.bat

迪尔 停顿

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

DIR >results.txt

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

示例批处理文件-test.bat

迪尔 停顿

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

DIR >results.txt

我会将错误记录到文件中,而不是保持窗口打开。 要使.net控制台窗口保持打开状态,请添加

Console.ReadLine();
最后,这将要求用户按Enter键继续。您还可以使用
Console.ReadKey()
来使用任何键


如果要保持进程窗口打开,则命令为“暂停”

,我将把错误记录到文件中,而不是保持窗口打开。 要使.net控制台窗口保持打开状态,请添加

Console.ReadLine();
最后,这将要求用户按Enter键继续。您还可以使用
Console.ReadKey()
来使用任何键


如果要保持进程窗口打开,则命令为“暂停”
pause

我不知道这是否是全部问题,但如果运行
cmd/K:dir
,则不会运行任何操作。用空格代替冒号对我来说很有用

i、 e.,
cmd/K dir



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

我不知道这是否是全部问题,但如果运行
cmd/K:dir
,则不会运行任何操作。用空格代替冒号对我来说很有用

i、 e.,
cmd/K dir



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

从示例中删除冒号:

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

从示例中删除冒号:

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

这似乎是有道理的,但是有很多这样的脚本,我不想为每个脚本编写单独的.BAT文件。我可以动态生成一个临时的.BAT文件。。。但这似乎是一个棘手的解决办法。难道没有更好的方法吗?您可以将结果输出到一个文件中,然后打开并显示该文件。C:>DIR>dirResults.txt似乎是合理的,但是有很多这样的脚本,我不想为每个脚本编写单独的.BAT文件。我可以动态生成一个临时的.BAT文件。。。但这似乎是一个棘手的解决办法。难道没有更好的方法吗?您可以将结果输出到一个文件中,然后打开并显示该文件。C:>DIR>dirResults.txt这是您在研究了另一个程序的命令行之后,尝试使用一个程序的命令行时得到的结果(在我的例子中是TortoiseSVN):p这是您在研究了另一个程序的命令行之后,尝试使用一个程序的命令行时得到的结果(在我的例子中是Otteroisesvn):P