修改批处理脚本:匹配指定文本后输出其上第3行内容
解决Windows批处理获取pnputil结果中目标行上第3行的问题
原脚本仅能捕获目标文本的上一行,要获取上第3行内容,需要保存最近的三行数据,匹配到目标时输出最早的那一行。修改后的脚本如下:
@echo off&color e setlocal EnableDelayedExpansion echo == 2016 Driver(s) Currently Installed == Echo.&Echo. for /F "tokens=2 delims=:" %%a in ('pnputil -e') do for /F "tokens=*" %%b in ("%%a") do ( if "%%b" equ "12/13/2016 1.0.0.2" ( echo !line3prior! ) :: 更新前三行的存储变量,依次向后传递 set "line3prior=!line2prior!" set "line2prior=!line1prior!" set "line1prior=%%b" ) Echo.&Echo. echo == Press button to exit ==&pause>nul exit
关键修改说明:
- 新增
line3prior、line2prior两个变量,和原有的line1prior共同保存最近的三行内容 - 每次循环先判断当前行是否为目标文本,若是则输出
line3prior(即上第3行) - 再按顺序更新三个变量:将
line2prior的值传递给line3prior,line1prior传递给line2prior,当前行赋值给line1prior,确保变量始终存储最近的三行数据
内容的提问来源于stack exchange,提问作者imyashy
相关产品推荐
相关产品推荐

