是否可以以这种方式设置 Windows
.BAT
文件,以便可以在从 CMD
调用时执行,但在有人双击该文件时不运行?
环境变量
%cmdcmdline%
包含用于启动CMD.exe的命令行。如果通过在资源管理器中或桌面上单击来启动批处理文件,则它将是:
C:\Path\To\cmd.exe /c ""c:\path\to\batch\file.bat" "
批处理文件的完整路径也可以在批处理文件本身中作为
%~f0
进行访问,以与该变量进行比较。
你想尝试这个编码建议做这项工作吗...
基本上,使用 findstr 检查变量
%cmdcmdline%
值是否与此 .cmd
或 .bat
匹配,如果返回正则 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