Valor da propriedade de saída WMIC sem nome de propriedade

5

Estou inserindo algo assim

Desktop>wmic environment where(name="PATH" and systemVariable=FALSE) get variableValue
VariableValue
xxx

Mas não quero que VariableValue entre na saída. Eu quero simplesmente obter xxx É possível?

    
por Paweł Audionysos 24.03.2017 / 22:16

3 respostas

9

Eu não quero que o VariableValue entre na saída. Eu quero simplesmente obter xxx Isso é possível?

Usando um arquivo em lotes:

@echo off
setlocal
for /f "usebackq skip=1 tokens=*" %%i in ('wmic environment where ^(name^="PATH" and systemVariable^=FALSE^) get variableValue ^| findstr /r /v "^$"') do echo %%i
endlocal

Usando uma linha de comando:

for /f "usebackq skip=1 tokens=*" %i in ('wmic environment where ^(name^="PATH" and systemVariable^=FALSE^) get variableValue ^| findstr /r /v "^$"') do @echo %i

Notas:

  • for /f faz um loop na saída wmic .
  • skip=1 ignora a linha de cabeçalho (contendo VariableValue )
  • findstr /r /v "^$" remove a linha em branco final da saída wmic .

Exemplo de saída:

C:\Users\DavidPostill\AppData\Roaming\npm

Leitura Adicional

por 25.03.2017 / 01:05
2

Canalizar procure :

wmic environment where(name="PATH" and systemVariable=FALSE) get variableValue | find /i "c:"

Como alternativa, você pode canalizá-lo por meio de findstr :

wmic environment where(name="PATH" and systemVariable=FALSE) get variableValue | findstr/n ^^|findstr "^[2-9]:"

Isso lhe dará as 2-9 linhas de saída. Note, no entanto, que ele será numerado.

    
por 24.03.2017 / 22:27
2

Envie sua saída para findstr como Ploni sugeriu, mas use a opção /v para findstr. Essa opção informa ao findstr para exibir apenas as linhas que não contêm uma correspondência, para que você possa especificar que não deseja ver as linhas que contêm "VariableValue". Por exemplo:

C:\Users\Jane>wmic environment where(name="PATH" and systemVariable=FALSE) get variableValue
VariableValue
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;


C:\Users\Jane>wmic environment where(name="PATH" and systemVariable=FALSE) get variableValue | findstr /v VariableValue
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;


C:\Users\Jane>

Nota: você também pode especificar que só deseja ignorar as linhas que começam com VariableValue, se precisar incluir linhas nas quais apareceu posteriormente na linha, usando a opção /R para findstr, que especifica que você será usando uma expressão regular e, em seguida, coloque um ^ antes da string de pesquisa, pois o caret representa o começo de uma linha. Por exemplo, wmic environment where(name="PATH" and systemVariable=FALSE) get variableValue | findstr /V /R "^VariableValue"

Atualização: Como uma alternativa aos comandos find e findstr , uma versão do GNU grep , que suporta expressões regulares e é amplamente usado em sistemas Linux / Unix, está disponível para Windows. Grep, bem como outros utilitários GNU para sistemas Windows podem ser baixados em Pacotes GNUWin .

    
por 24.03.2017 / 23:42