Как просмотреть список установленных программ и убрать любую строку со строками Microsoft?

464
Zachary Johnson

Это на Windows 7 с использованием командной строки и командных файлов.

Я искал список своих программ, удалял большое количество ненужных и обновлял большое количество устаревших программ. Я использовал команду wmic для построчного получения текстового документа с каждой программой. Я хочу удалить каждую программу из этого списка с именем «Microsoft», «Windows» или «Visual» в названии. Я пытаюсь сделать это с помощью команды findstr и параметра / 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" 
3

1 ответ на вопрос

2
DavidPostill

Запуск программы, которую я написал, не находит совпадений в файле

Я использовал команду wmic для построчного получения текстового документа с каждой программой.

Из wmic :

Все выходные файлы имеют текст в кодировке Юникод (преобразовать в ASCII с ТИПОМ )

Это сбивает с толку то, 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команде

Дальнейшее чтение