是否有可能设置一个Windows .BAT
文件,使得当从CMD
调用时可以执行,但当有人双击该文件时不运行?
是否有可能设置一个Windows .BAT
文件,使得当从CMD
调用时可以执行,但当有人双击该文件时不运行?
环境变量%cmdcmdline%
包含启动CMD.exe的命令行。如果批处理文件是从资源管理器或桌面上的单击启动的,则为:
C:\Path\To\cmd.exe /c ""c:\path\to\batch\file.bat" "
批处理文件的完整路径也可以在批处理文件内部作为 %~f0
访问,以与该变量进行比较。
C:\windows\system32\cmd.exe /c ""C:\BatchFiles\CMDCMDLINE\test.bat" "
- SquashmanCMDCMDLINE
变量看起来就像从资源管理器
启动时一样。 - Squashman%ComSpec%
应该是cmd.exe的全路径,至少在Vista系统之后是这样。但我认为备用命令解释器可以替换该值。Windows目录(即“C:\Windows”)是%SystemRoot%
,因此您可以使用“%SystemRoot%\System32\ cmd.exe”。 - Eryk Sun @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
CMD
(交互式)启动,我希望它运行。如果从双击(非交互式)启动,则希望防止其运行。我看不到任何矛盾之处。 - IDDQD