4

Я пытаюсь запустить следующую команду в «FOR /F» в оболочке Windows ...

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

= Между ParentProcessId и% PID% продолжает заменяться пробелом.

Результат:

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

Как мне избежать этого символа = знак?

2 ответа2

2

Как мне избежать этого символа = знак?

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

Есть две проблемы с вышеуказанным:

  1. При использовании "usebackq" вам нужно ставить обратные кавычки вокруг команды, которую нужно обработать for .

  2. Там должно быть кавычки " where wmic

Используйте следующий пакетный файл:

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

Пример вывода:

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

Замечания:

  • ECHO is off. строка выводится, потому что wmic выводит последнюю пустую строку.

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

2

Пытаться:

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

Знак «=» экранируется знаком «^». Также обратите внимание, что сама команда wmic заключена в «обратные кавычки», как вы вызываете при использовании параметра usebackq .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .