我正在创建一个脚本,在PC上创建所有HotFix的列表,然后继续删除它们(我需要它,其他工具如Windows Updates Uninstaller不起作用)。
然后: 我的第一个批处理创建一个包含所有修补程序的临时文件
wmic qfe get "HotFixID" /format:table >%~dp0temp.txt
问题是创建的临时文件具有此格式
HotFixID
KB2533552
KB2884256
KB2952664
KB3020369
KB3020370
KB976002
KB976902
我需要删除第一行,以及每隔一行的后续2个字符,看起来像这样
2533552
2884256
2952664
3020369
3020370
976002
976902
我需要这个,因为我的下一个脚本需要更新的ID,而KB很烦人。 你能救我吗?
答案 0 :(得分:2)
您可以直接从Wmic
获得正确的输出:
@echo off
setlocal enabledelayedexpansion
(for /f "delims=" %%a in ('wmic qfe get "HotFixID" ^| findstr [0-9]') do (
set "$Line=%%a"
echo !$Line:~2!))>%~dp0temp.txt
使用wmic
对findstr
进行管道RegExp
以检查该行是否包含数字并输出结果行而不包含第一个字符。
答案 1 :(得分:0)
您可以使用JREPL.BAT - 用于Windows的混合JScript /批处理正则表达式处理实用程序。它是纯脚本,可以在XP以后的任何Windows机器上本机运行。
wmic qfe get "HotFixID" | jrepl "^KB(\d+)" $1 /jmatch /o "%~dp0temp.txt"