我喜欢在我的目录中有一个典型的“usage:”行cmd.exe
脚本 — 如果缺少参数,系统会简单提醒用户如何使用脚本。
问题是我无法安全地预测潜在用户是否会使用 GUI 还是 CLI。如果使用 GUI 的人在资源管理器窗口中双击此脚本,他们将没有机会阅读任何内容,除非我pause
窗户。如果他们使用 CLI,pause
会打扰他们。
所以我正在寻找一种方法来检测它。
@echo off
if _%1_==__ (
echo usage: %nx0: filename
rem now pause or not to pause?
)
这方面有好的解决办法吗?
您可以检查的值%CMDCMDLINE%
多变的。它包含用于启动的命令cmd.exe
.
我准备了一个测试.bat文件:
@Echo Off
echo %CMDCMDLINE%
pause
当从 open 内部运行时cmd.exe
窗口,脚本打印"C:\Windows\system32\cmd.exe"
。
双击运行时,会打印cmd /c ""C:\Users\mbu\Desktop\test.bat" "
因此,要检查脚本是否通过双击启动,您需要检查是否%cmdcmdline%
包含脚本的路径。最终的解决方案如下所示:
@echo off
set interactive=1
echo %cmdcmdline% | find /i "%~0" >nul
if not errorlevel 1 set interactive=0
rem now I can use %interactive% anywhere
if _%1_==__ (
echo usage: %~nx0 filename
if _%interactive%_==_0_ pause
)
Edit:对评论中讨论的问题更改进行了修复;编辑示例来演示它们
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)