检测是否在为其分配的控制台中启动了.bat文件

时间:2010-11-06 11:06:09

标签: windows batch-file

  

可能重复:
  Conditional PAUSE (not in command line)

我有一个.bat文件,可以进行一些处理并打印一些输出,人们可能想检查输出。不同的人(取决于他们的个人偏好和工作流程)以不同的方式运行此文件:一些使用“开始 - >运行”对话框,一些从资源管理器启动它,一些启动cmd.exe然后从那里启动此.bat文件。

如果我只将pause放在.bat文件的末尾,它将允许不从cmd运行它的用户看到输出,但它会阻止运行它的那些来自cmd,因为他们需要无缘无故地按任意键(在任何情况下都不会丢失输出)。如果我不放pause,则不使用cmd的人将看不到输出。

我想检测是否已分配新控制台以运行.bat文件并运行或不运行pause,具体取决于它。可能吗?或者还有其他解决方案吗?

2 个答案:

答案 0 :(得分:3)

为批处理添加一个参数,当从快捷方式运行时会导致暂停被激活但从cmd.exe运行时不会

iow:

if "%1"=="" goto nopause
pause
:nopause

答案 1 :(得分:1)

最简单的方法是创建两个仅在该点不同的.bat文件。

或者,您可以使用主.bat和.bat来调用主批处理文件,其参数说“请在完成任务后请关闭我”。