Escapando “=” (sinal de igual) em para / f

4

Estou tentando executar o seguinte comando em um "FOR / F" no shell do Windows ...

wmic process where ParentProcessId=%%PID%% get ProcessId

O = entre ParentProcessId e% PID% mantém os gettings substituídos por um espaço.

O resultado é:

for /F "usebackq" %b in (wmic process where ParentProcessId %PID% get ProcessId) do ( .

Como eu escaparia desse caractere = sinal?

    
por user545778 15.01.2016 / 21:29

2 respostas

2

Tente:

for /F "usebackq" %b in ('wmic process where ParentProcessId^=0 get ProcessId') do echo %b

O sinal "=" é escapado com um "^". Observe também que o comando wmic em si é colocado entre “aspas anteriores”, conforme solicitado pelo uso do parâmetro usebackq .

    
por 15.01.2016 / 22:10
2

Como eu escaparia desse caractere = sinal?

for /F "usebackq" %%b in (wmic process where ParentProcessId=%PID% get ProcessId) do (

Existem dois problemas com o acima:

  1. Ao usar "usebackq" , é necessário colocar backquotes em volta do comando a ser processado por for .

  2. É preciso haver cotações " em torno da cláusula where de wmic .

Use o seguinte arquivo em lotes:

@echo off
setlocal 
set PID=1188
for /F "usebackq" %%b in ('wmic process where "ParentProcessId=%PID%" get ProcessId') do (
  echo %%b
  )
endlocal

Exemplo de saída:

F:\test>test
ProcessId
2508
10100
ECHO is off.

Nota:

  • A linha ECHO is off. é gerada porque wmic gera uma linha final em branco.

Leitura Adicional

por 15.01.2016 / 22:02