批量禁止文件夹(含子文件夹)里所有 exe 文件联网
来源:https://zhuanlan.zhihu.com/p/641635018
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | @Echo Off SetLocal :begin echo: echo ****** 禁止文件夹联网 ****** echo: set /p folder=请输入文件夹(退出请直接关闭窗口): If Not Exist "%folder%\" Exit/B If /I "%CD%" NEq "%folder%" PushD %folder% Set "Cmnd=netsh advfirewall firewall add rule action=block" echo: For /R %%a In (*.exe) Do (For %%b In (in out) Do ( echo 创建禁止 %%b 规则【%%a】 %Cmnd% name="blocked %%a via script" dir=%%b program="%%a")) echo: echo 搞定了,%folder% 中所有 exe 文件的禁止入站、出站规则都已成功创建! echo ---------------------------- echo: goto begin |
保存成 .bat 扩展名的文件,名字随意;保存时注意一下编码,要选 ANSI。
自动识别文件夹以及子文件夹内的exe:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | @Echo Off SetLocal EnableDelayedExpansion cd /d "%~dp0" set "TargetDir=%CD%" cls echo **************************************************** echo * 自动禁止当前目录及子目录下所有.exe文件联网 * echo * 当前操作目录: !TargetDir! echo **************************************************** echo. echo 正在扫描文件并创建防火墙规则,请稍候... echo. set "ruleCount=0" set "skipCount=0" set "failCount=0" for /r %%a in (*.exe) do ( set "exePath=%%a" set "exeName=%%~nxa" set "ProductName=" ::读取exe内置产品名称 for /f "skip=1 tokens=2 delims==" %%p in ('wmic datafile where "name='!exePath!'" get ProductName /value 2^>nul') do ( set "ProductName=%%p" ) ::判定描述内容 if defined ProductName ( set "RuleDesc=!ProductName! !exeName!" ) else ( set "RuleDesc=!exeName!" ) echo 正在处理: !exeName! [产品信息:!ProductName!] for %%b in (in out) do ( set "RuleName=Block_!exeName!_%%b" netsh advfirewall firewall show rule name="!RuleName!" >nul 2>&1 if !errorlevel! equ 0 ( echo [跳过] 规则已存在 set /a skipCount+=1 ) else ( ::加入 description 参数写入产品名称 netsh advfirewall firewall add rule ^ name="!RuleName!" ^ dir=%%b ^ program="!exePath!" ^ action=block ^ profile=any ^ enable=yes ^ description="!RuleDesc!" >nul 2>&1 if !errorlevel! equ 0 ( echo [成功] 已创建,描述:!RuleDesc! set /a ruleCount+=1 ) else ( echo [失败] 错误代码:!errorlevel! set /a failCount+=1 ) ) ) echo. ) echo ==================================================== echo 操作完成! echo 新增规则: !ruleCount! 条 echo 跳过重复: !skipCount! 条 echo 创建失败: !failCount! 条 echo ==================================================== echo. echo 按任意键关闭窗口... pause >nul |