我可以通过双击来阻止 Windows 批处理文件的执行吗?

问题描述 投票:0回答:2

是否可以以这种方式设置 Windows

.BAT
文件,以便可以在从
CMD
调用时执行,但在有人双击该文件时不运行?

windows batch-file
2个回答
8
投票

环境变量

%cmdcmdline%
包含用于启动CMD.exe的命令行。如果通过在资源管理器中或桌面上单击来启动批处理文件,则它将是:

C:\Path\To\cmd.exe /c ""c:\path\to\batch\file.bat" "

批处理文件的完整路径也可以在批处理文件本身中作为

%~f0
进行访问,以与该变量进行比较。


2
投票

你想尝试这个编码建议做这项工作吗...

基本上,使用 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
 

© www.soinside.com 2019 - 2024. All rights reserved.