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

Windows 检测是否在为其分配的控制台中启动了.bat文件,windows,batch-file,Windows,Batch File,可能重复: 我有一个.bat文件,它进行一些处理并打印一些输出,人们可能希望检查这些输出。不同的人(取决于他们的个人喜好和工作流程)运行此文件的方式不同:一些人使用“开始->运行”对话框,一些人从资源管理器启动,一些人启动cmd.exe然后从那里启动此.bat文件 如果我只是将pause放在.bat文件的末尾,它将允许未从cmd运行它的用户查看输出,但它会阻止从cmd运行它的用户,因为他们需要无理由地按任何键(在任何情况下都不会丢失输出)。如果我不把pause放进去,那么不使用cmd的人将看不

可能重复:

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

如果我只是将
pause
放在.bat文件的末尾,它将允许未从
cmd
运行它的用户查看输出,但它会阻止从
cmd
运行它的用户,因为他们需要无理由地按任何键(在任何情况下都不会丢失输出)。如果我不把
pause
放进去,那么不使用
cmd
的人将看不到输出


我想检测是否分配了新控制台来运行.bat文件,并根据它运行或不运行
pause
。可能吗?或者还有其他解决方案吗?

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


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

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

iow:

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

问题是,在所有用户中,没有人使用快捷方式:他们要么从开始->运行,要么只是双击资源管理器中的.bat文件。但无论如何,它给了一些思考的食物