batch file,以确定是否使用命令提示符

我的batch file中的最后一行是pause 。 有没有办法添加if条件来查看脚本是在命令提示符下运行,还是通过双击执行? 如果它在命令提示符下运行,我想跳过暂停。

 ... ... if not RUN_IN_COMMAND_PROMPT ( pause ) 

编辑:希望find一个解决scheme在Windows Server 2003/2008,WinXP,Win7的作品。

 CALL :GETMYSWITCH %CMDCMDLINE% IF /I "%MYSWITCH%" == "/C" ECHO I WAS STARTED IN THE EXPLORER & PAUSE IF /I NOT "%MYSWITCH%" == "/C" ECHO I WAS STARTED IN A DOS SESSION :GETMYSWITCH SET MYSWITCH=%2 

根据定义,shell脚本总是在“命令提示符”中运行。 但是尝试使用SESSIONNAME env var – 如果脚本是通过双击启动的,而不是从提示中手动运行它,似乎不存在。

我知道这是一年后,但未来的人搜索你可以使用

 If /I "%COMSPEC%" == %CMDCMDLINE% Goto SkipPause pause :SkipPause 

它将跳过暂停块。

使用tty命令。

使用-s选项并检查返回值。