标题: [其他] 探讨批处理WMIC检测是否可用 [打印本页]
作者: luckboy45 时间: 2024-10-29 15:54 标题: 探讨批处理WMIC检测是否可用
WMIC应用范围广泛,但有很多系统不带或者默认没有安装,我们写的长篇代码如果涉及到以上程序,需要预先做个判断,我的脚本编写水平停留在09年,仅个人业余爱好,闲来无事逛逛论坛,贴出我以前写的代码抛砖引玉,以便共同交流学习。- @echo off & setlocal EnableDelayedExpansion
- :begin
- ::判断wmic.exe是否存在,不存在跳转,存在则最小化运行wmic.exe,延迟2秒
- if not exist C:\WINDOWS\system32\wbem\wmic.exe (goto wmic_error) else (start/min wmic.exe)
- ping -n 2 127.1>nul
- ::进程检测wmic.exe是否存在,不存在则跳转repair_wmic段,存在则结束进程到next段代码
- tasklist /nh | findstr /i /c:"wmic.exe"
- if errorlevel 1 ( goto repair_wmic ) else ( taskkill /f /im wmic.exe & goto next )
- :repair_wmic
- 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)
- if exist C:\WINDOWS\system32\wbem\framedyn.dll copy C:\WINDOWS\system32\wbem\framedyn.dll C:\WINDOWS\system32\framedyn.dll>nul & sc start wmiApSrv
- goto next
- :wmic_error
- echo MsgBox "亲爱的朋友,缺少关键文件wmic.exe!", 64, "缺少关键文件!" >>%temp%\wmic.vbs
- start %temp%\wmic.vbs & exit
- :next
- echo 开始你想执行的代码吧
- pause
复制代码
- @echo off
- help|find /i "wmic" && echo;已安装wmic||echo;未安装wmic && set "path=%path%;C:\Windows\System32\Wbem" && WMIC
- 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 |