Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理文件,以确定是否使用命令提示符_Windows_Batch File - Fatal编程技术网

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

Windows 批处理文件,以确定是否使用命令提示符,windows,batch-file,Windows,Batch File,批处理文件中的最后一行是暂停。有没有办法添加一个if条件来查看脚本是在命令提示符下运行还是双击执行?我想跳过暂停,如果它在命令提示符下运行 ... ... if not RUN_IN_COMMAND_PROMPT ( pause ) 编辑: 希望找到一个在Windows Server 2003/2008、WinXP、Win7中工作的解决方案。使用tty命令 使用-s选项并检查返回值。根据定义,shell脚本总是在“命令提示符”中运行。但是请尝试使用SESSIONNAMEenv变量-如果脚本

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

...
...
if not RUN_IN_COMMAND_PROMPT (
  pause
)
编辑:
希望找到一个在Windows Server 2003/2008、WinXP、Win7中工作的解决方案。

使用
tty
命令


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

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

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

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

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

在Win7下测试,两者(双击,提示)都有%SESSIONNAME%值“Console”。对我不起作用<无论如何启动批处理文件(使用Windows XP),code>SESSIONNAME始终包含
Console
。奇怪的是,在我的Win7 64位上,只有当我直接从提示符运行脚本时,SESSIONNAME才会出现。