批量删除行 - 删除TXT中的单词

时间:2016-02-10 16:07:35

标签: batch-file cmd edit

我正在创建一个脚本,在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很烦人。 你能救我吗?

2 个答案:

答案 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

使用wmicfindstr进行管道RegExp以检查该行是否包含数字并输出结果行而不包含第一个字符。

答案 1 :(得分:0)

您可以使用JREPL.BAT - 用于Windows的混合JScript /批处理正则表达式处理实用程序。它是纯脚本,可​​以在XP以后的任何Windows机器上本机运行。

wmic qfe get "HotFixID" | jrepl "^KB(\d+)" $1 /jmatch /o "%~dp0temp.txt"