如何浏览已安装程序列表并删除任何包含 Microsoft 相关字符串的行?

如何浏览已安装程序列表并删除任何包含 Microsoft 相关字符串的行?

这是在 Windows 7 上使用命令行和批处理文件。

我想检查我的程序列表,卸载大量垃圾程序并更新大量过时的程序。我使用 wmic 命令逐行获取包含每个程序的文本文档。我想从该列表中删除名称中带有“microsoft”、“windows”或“visual”的每个程序。我尝试使用查找字符串命令,以及 /v 选项,使其仅输出没有匹配的行。但是,运行我编写的程序时,在文件中找不到匹配项,因此基本上只是复制它。我还尝试了通配符,以防单词周围的其他字符弄乱了它或发生其他事情。

这是它正在查看的文件中其中一行的示例:(LASTNAME-LAPTOP,Microsoft Office Excel Viewer,12.0.6612.1000)

PATH 只是我的闪存驱动器文件夹路径的表示,在脚本中,它是包含两个 RTF 文件的文件夹的实际路径。它包含一个空格,所以我在源和输出两边加上了引号。

这是我的程序:

findstr /i /v ".microsoft. .windows. .visual." "E:\PATH\programs.rtf" > "E:\PATH\programs2.rtf"

答案1

运行我编写的程序,在文件中找不到匹配项

我使用 wmic 命令逐行获取包含每个程序的文本文档。

西米克

所有输出文件都是 Unicode 文本(使用类型

这会让findstr需要 ASCII 作为输入的人感到困惑,例如:

F:\test>findstr /i /v "microsoft windows visual" unicode.txt
 ■N a m e                                                                                                                       V e r s i o n

 V A I O   D a t a   R e s t o r e   T o o l                                                                                   1 . 6 . 0 . 1 3 1 4 0
 I n k s c a p e   0 . 9 1                                                                                                     0 . 9 1
 M S X M L   4 . 0   S P 3   P a r s e r   ( K B 2 7 5 8 6 9 4 )                                                               4 . 3 0 . 2 1 1 7 . 0

您可以使用以下示例命令序列来解决此问题:

wmic product get name,version > unicode.txt
type unicode.txt > programs.txt
findstr /i /v "microsoft windows visual" programs.txt > programs2.txt

或者:

wmic product get name,version > programs.txt
type programs.txt | findstr /i /v "microsoft windows visual" > programs2.txt

笔记:

  • 使用纯文本文件(非 RTF)作为输入findstr
  • type用于从 Unicode 转换为 ASCII。
  • 命令.中不需要字符findstr

进一步阅读

相关内容