Экранирование "=" (знак равенства) в течение / F

4730
user545778

Я пытаюсь запустить следующую команду в «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 (,

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

4
Как ты имеешь в виду, что он «заменяется»? Вы вводите это, и знак равенства волшебным образом превращается в пробел? Вы используете это в командном файле? Ƭᴇcʜιᴇ007 8 лет назад 0
Поместите «вокруг» для / F «usebackq»% b в («wmic process, где ParentProcessId =% PID% get ProcessId») ... Пример: IN («WMIC Path Win32_DiskPartition где« BootPartition = true и PrimaryPartition = true »Получить DeviceID / Формат: список ') DO Setekh 8 лет назад 0
@ Сетех Это неправильно. `usebackq` требует обратных кавычек` \ `` не одинарных кавычек `'` DavidPostill 8 лет назад 0
Нееет не userbackq ... ('WMIC ...') получить его Setekh 8 лет назад 0

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

2
DavidPostill

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

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выводит конечную пустую строку.

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

Это то, что я пытался объяснить, но напиши это так, чтобы я не понял: D Setekh 8 лет назад 0
Цитирование не работает для меня, но экранирование знака равенства в соответствии с ответом BillP3rd сделал. Burkart 5 лет назад 0
2
BillP3rd

Пытаться:

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

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