是否可以通过这样的方式设置Windows .BAT
文件,以便从CMD
调用时可以执行,但是当有人双击该文件时无法运行?
答案 0 :(得分:7)
环境变量%cmdcmdline%
包含用于启动CMD.exe的命令行。如果批处理文件是通过单击资源管理器或在桌面上启动的,它将是:
C:\Path\To\cmd.exe /c ""c:\path\to\batch\file.bat" "
批处理文件的完整路径也可以在批处理文件本身中以%~f0
的形式访问以与该变量进行比较。
答案 1 :(得分:2)
您想尝试一下此编码建议执行此操作吗?
基本上,使用findstr检查变量 %cmdcmdline%
的值是否与此 .cmd
或 .bat
< / strong>,如果返回的是肯定值,则 goto :eof
(退出),如果不是,则返回 run your code...
@echo off & cd /d %~dp0"
echo/%cmdcmdline% | findstr /i "\.cmd \.bat" 2>nul && (
title... by click.. & echo/%cmdcmdline% | findstr "%0"
echo/ bat: "%0" running by click
timeout /t 5 /nobreak>nul & goto :eof
) || (
title... by command line.. && echo/%cmdcmdline%| findstr "%0"
echo/ bat: "%0" running by command line
timeout /t 5 /nobreak>nul & goto :run_code
)
:run_code
echo/ your code enter here
:: ....
goto :eof