如何编写批处理脚本根据zac ps命令输出执行对应操作?
用批处理实现Zenworks ZAC补丁扫描结果的自动判断与处理
工作中使用Zenworks的zac工具执行zac ps(补丁扫描)命令时,会先输出以下固定内容:
Processing command: ps Starting patch scan .....
随后会返回三种结果之一:
The patch scan has completed and reported results to the server(扫描完成并上报结果)There was an error scanning the computer: ANALYZE_FAILED(扫描分析失败)There was an error scanning the computer: FAILED_TO_REPORT_RESULTS(扫描结果上报失败)
可以通过批处理脚本捕获命令输出,根据不同结果自动执行对应修复操作,实现代码如下:
@echo off setlocal enabledelayedexpansion :: 执行ZAC补丁扫描命令,并将输出保存到临时文件 zac ps > "%temp%\zac_ps_output.txt" :: 检查输出中是否包含ANALYZE_FAILED findstr /i "ANALYZE_FAILED" "%temp%\zac_ps_output.txt" >nul if !errorlevel! equ 0 ( echo 检测到扫描分析失败,执行修复命令... zac bv "discover applicable updates" goto :cleanup ) :: 检查输出中是否包含FAILED_TO_REPORT_RESULTS findstr /i "FAILED_TO_REPORT_RESULTS" "%temp%\zac_ps_output.txt" >nul if !errorlevel! equ 0 ( echo 检测到结果上报失败,执行文件删除修复... :: 替换为你需要删除的指定文件路径 del /f /q "C:\path\to\your\target_file.ext" goto :cleanup ) :: 扫描成功的情况 echo 补丁扫描已成功完成并上报结果。 :cleanup :: 删除临时输出文件 del /f /q "%temp%\zac_ps_output.txt" endlocal
脚本说明
- 启用
setlocal enabledelayedexpansion确保条件判断中errorlevel的取值准确 - 将
zac ps的输出重定向到临时文件,避免控制台输出干扰判断逻辑 - 用
findstr匹配错误关键词,通过errorlevel判断匹配结果(匹配成功时errorlevel为0) - 针对两种错误分别执行对应修复操作,扫描成功时仅提示结果
- 最后自动清理临时文件,避免残留垃圾
内容的提问来源于stack exchange,提问作者abnormalfantasy
相关产品推荐
相关产品推荐

