窗口 – 检测批处理文件的执行方式

前端之家收集整理的这篇文章主要介绍了窗口 – 检测批处理文件的执行方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设Windows是否有一种方法可以从批处理文件中检测到,如果是从打开的命令提示符或双击启动的?当且仅当双击时,我想添加一个暂停到批处理过程结束,这样窗口不会随着可能产生的任何有用的输出消失.

任何聪明的方法来做到这一点我正在寻找可以依赖于使用默认设置配置的机器的解决方案.

我刚刚进行了一个快速测试,并注意到以下内容,这可能会帮助您:

>当从打开的命令提示符运行时,%0变量在路径周围没有双引号.如果脚本驻留在当前目录中,则该路径甚至不给出,只是批处理文件名.
>从资源管理器运行时,%0变量始终用双引号括起来,并包含批处理文件的完整路径.

如果从命令控制台运行,此脚本将不会暂停,但如果在资源管理器中双击该脚本:

@echo off
setlocal enableextensions

set SCRIPT=%0
set DQUOTE="

@echo do something...

@echo %SCRIPT:~0,1% | findstr /l %DQUOTE% > NUL
if %ERRORLEVEL% EQU 0 set PAUSE_ON_CLOSE=1

:EXIT
if defined PAUSE_ON_CLOSE pause

编辑:
从资源管理器运行时也有一些奇怪的行为,我无法解释.本来,而不是

@echo %SCRIPT:~0,1% | findstr /l %DQUOTE% > NUL
if %ERRORLEVEL% EQU 0 set PAUSE_ON_CLOSE=1

我试过只使用if:

if %SCRIPT:0,1% == ^" set PAUSE_ON_CLOSE=1

当从打开的命令提示符运行时,这将起作用,但是从Explorer运行时,它会抱怨if语句不正确.

原文链接:https://www.f2er.com/windows/371443.html

猜你在找的Windows相关文章