Board logo

标题: [其他] 探讨批处理WMIC检测是否可用 [打印本页]

作者: luckboy45    时间: 2024-10-29 15:54     标题: 探讨批处理WMIC检测是否可用

WMIC应用范围广泛,但有很多系统不带或者默认没有安装,我们写的长篇代码如果涉及到以上程序,需要预先做个判断,我的脚本编写水平停留在09年,仅个人业余爱好,闲来无事逛逛论坛,贴出我以前写的代码抛砖引玉,以便共同交流学习。
  1. @echo off & setlocal EnableDelayedExpansion
  2. :begin
  3. ::判断wmic.exe是否存在,不存在跳转,存在则最小化运行wmic.exe,延迟2秒
  4. if not exist C:\WINDOWS\system32\wbem\wmic.exe (goto wmic_error) else (start/min wmic.exe)
  5. ping -n 2 127.1>nul
  6. ::进程检测wmic.exe是否存在,不存在则跳转repair_wmic段,存在则结束进程到next段代码
  7. tasklist /nh | findstr /i /c:"wmic.exe"
  8. if errorlevel 1 ( goto repair_wmic ) else ( taskkill /f /im wmic.exe & goto next )
  9. :repair_wmic
  10. if not exist C:\WINDOWS\system32\wbem\wmic.exe (goto wmic_error) else (copy C:\WINDOWS\system32\wbem\wmic.exe C:\WINDOWS\system32\wmic.exe>nul)
  11. if exist C:\WINDOWS\system32\wbem\framedyn.dll copy C:\WINDOWS\system32\wbem\framedyn.dll C:\WINDOWS\system32\framedyn.dll>nul & sc start wmiApSrv
  12. goto next
  13. :wmic_error
  14. echo MsgBox "亲爱的朋友,缺少关键文件wmic.exe!", 64, "缺少关键文件!"  >>%temp%\wmic.vbs
  15. start %temp%\wmic.vbs & exit
  16. :next
  17. echo 开始你想执行的代码吧
  18. pause
复制代码
  1. @echo off
  2. help|find /i "wmic" && echo;已安装wmic||echo;未安装wmic && set "path=%path%;C:\Windows\System32\Wbem" && WMIC
  3. pause
复制代码
第一段我写的代码,第二段是论坛上找的用于设置环境变量,有时候就是环境变量设置的问题,导致脚本无法执行,期待大家探讨下。
作者: Five66    时间: 2024-10-29 18:17

啊 ,wmic不是都自带的吗?用不了的或许是被精简掉或者高版本系统默认禁用了?

系统盘不一定是C ,建议用变量SystemDrive或SystemRoot或其他代替
设置环境变量有问题就不要设置环境变量 ,单独用一个变量

wmic只是个wmi客户端 ,需要wmi服务 ,用不了其实也可以用其他的wmi客户端 ,例如wsh或ps
作者: hnfeng    时间: 2024-10-29 20:04

回复 2# Five66


    新版及以后的Win11不带wmic了
作者: hnfeng    时间: 2024-10-29 20:20

wmic cpu /? >nul
if %errorlevel% EQU 0 (
  echo 有 wmic
  ) else (
  echo 没有wmic
)
pause
作者: Five66    时间: 2024-10-29 21:50

回复 3# hnfeng


    啊 ,不是说变成可选功能了? 应该还可以在设置里添加回来吧
作者: hnfeng    时间: 2024-10-29 22:22

回复  hnfeng


    啊 ,不是说变成可选功能了? 应该还可以在设置里添加回来吧
Five66 发表于 2024-10-29 21:50



    是可以添加回来,但是运行批处理的电脑,不一定已经添加回来了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2