Como passar por uma lista de programas instalados e remover qualquer linha com strings relacionadas à Microsoft?

3

Isso está no Windows 7 usando a linha de comando e arquivos em lote.

Eu estava olhando para examinar minha lista de programas e desinstalar uma boa quantidade de lixo e atualizar uma boa quantidade de programas desatualizados. Eu usei um comando wmic para obter um documento de texto com cada programa, linha por linha. Eu quero remover todos os programas dessa lista com "microsoft", "windows" ou "visual" no nome. Estou tentando fazer isso usando o comando findstr e a opção / v que faz com que ele exiba apenas linhas sem correspondência. No entanto, executando o programa que escrevi não encontra correspondências dentro do arquivo, basicamente, apenas copia. Eu tentei os personagens selvagens também, caso os outros personagens em torno da palavra estragassem tudo ou algo assim.

Veja um exemplo de uma das linhas no arquivo que está sendo analisado: (LASTNAME-LAPTOP, Visualizador do Microsoft Office Excel, 12.0.6612.1000)

O PATH é apenas uma representação do caminho para a pasta da minha unidade flash, no script é o caminho real para uma pasta com os dois arquivos RTF dentro dela. Ele continha um espaço, então eu coloco aspas em torno da fonte e da saída.

Aqui está o meu programa:

findstr /i /v ".microsoft. .windows. .visual." "E:\PATH\programs.rtf" > "E:\PATH\programs2.rtf"
    
por Zachary Johnson 14.03.2016 / 23:22

1 resposta

2

A execução do programa que escrevi não encontra correspondências no arquivo

I used a wmic command to get a text document with every program, line-by-line.

De wmic :

All output files are unicode text (convert to ASCII with TYPE)

Isso confunde findstr , que espera ASCII como entrada, por exemplo:

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

Você pode contornar isso usando a seguinte sequência de exemplos de comandos:

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

Alternativamente:

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

Notas:

  • Use arquivos de texto simples (não RTF) como entrada para findstr .
  • type é usado para converter de Unicode para ASCII.
  • Os caracteres . não são necessários no comando findstr

Leitura Adicional

por 15.03.2016 / 00:17