【问题标题】:How to keep console window open even after program started from batch-file has been terminated?即使从批处理文件启动的程序已终止,如何保持控制台窗口打开?
【发布时间】:2018-08-30 09:03:35
【问题描述】:

我需要创建一个批处理文件 (.bat),即使在已启动的程序终止后(为了检查控制台窗口输出),它也会使控制台窗口保持打开状态。为此,我尝试使用“/WAIT”开关:

@ECHO OFF
title test
@ECHO ON
start "" /WAIT "C:\My CLI Tools\7zip\x64\7za.exe"

但尽管使用了“/WAIT”开关,但在 7za.exe 终止后控制台窗口会自动关闭。 (显然,“/WAIT”开关只等待启动的程序终止)。

那么,即使在 7za.exe 被终止后,如何让控制台窗口保持打开状态?

【问题讨论】:

  • pause 在最后,或者timeout /T 300 是唯一的方法.. /wait 只告诉批处理等待 7z 终止。

标签: windows batch-file windows-console


【解决方案1】:

start /wait 告诉批处理在执行下一行或完成脚本之前等待程序终止。让它保持打开并且什么都不做,你可以使用暂停:

@ECHO OFF
title test
@ECHO ON
"C:\My CLI Tools\7zip\x64\7za.exe"
pause

或超时:

@ECHO OFF
title test
@ECHO ON
start "" /WAIT "C:\My CLI Tools\7zip\x64\7za.exe"
timeout /t 300

但在超时或您按任意键之前,这两个都不会执行任何操作。

如果您希望在 cmd 窗口中输出,并且该命令实际上向 cmd 控制台提供了输出,那么您不应该在当前控制台窗口之外 start 它。做吧:

@ECHO OFF
title test
@ECHO ON
"C:\My CLI Tools\7zip\x64\7za.exe"
pause

【讨论】:

  • 但是如果没有开关/参数存在,7za.exe 应该输出使用帮助 txt。但是当我在批处理文件末尾使用“暂停”语句时,没有使用帮助文本输出。那么如何才能既查看使用帮助文本输出又保持控制台窗口打开呢?
  • @user1580348 它是否在 cmd 窗口中显示?如果是这种情况,请尝试最底层的代码。
  • 是的,如果我删除“开始”部分,那么它会在 cmd 窗口中显示使用帮助输出。但是“开始”是为了什么?对不起,我问了。
  • start /? from cmd 将解释一切,但简而言之,它在单独的 cmd 实例上启动外部命令。
  • 了解它的作用。打开cmd并输入start cmd看看会发生什么。然后在同一个cmd 中输入cmd 看看会发生什么。第一个将打开一个新窗口,第二个将在同一窗口中运行命令。最后start "" /wait 只是两个双引号是创建空标题,/wait 只是等待新打开的命令关闭,然后再继续。所以start "Mywindow" /Wait cmd会打开一个新的cmd,但是标题为MyWindow的第一个cmd会处于等待状态。
猜你喜欢
  • 2012-11-24
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 2014-04-20
  • 2010-12-26
相关资源
最近更新 更多