繁体   English   中英

确定是否使用命令提示符的批处理文件

[英]Batch file to determine if using Command Prompt

我的批处理文件中的最后一行是pause 有什么方法可以添加 if 条件以查看脚本是在命令提示符下运行还是通过双击执行? 如果它在命令提示符下运行,我想跳过暂停。

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

编辑:希望在 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

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

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

如果从命令行运行,它将跳过暂停块,如果从批处理文件运行,它将暂停。

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

使用tty命令。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM