Escape-Zeichen "=" (Gleichheitszeichen) für / f

4643
user545778

Ich versuche, den folgenden Befehl in einer "FOR / F" in der Windows-Shell auszuführen ...

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

Die =zwischen ParentProcessId und% PID% halten Gettings durch ein Leerzeichen ersetzen.

Das Ergebnis ist:

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

Wie würde ich diesem Zeichen entkommen = Zeichen?

4
Wie meinst du, es wird "ersetzt"? Sie tippen es ein und das Gleichheitszeichen verwandelt sich magisch in ein Leerzeichen? Verwenden Sie dies in einer Batchdatei? Ƭᴇcʜιᴇ007 vor 8 Jahren 0
Setzen Sie '/ f "usebackq"% b in ein (' wmic-Prozess, wobei ParentProcessId =% PID% '' ProcessId 'erhält') ... Beispiel: IN ('WMIC-Pfad Win32_DiskPartition "wobei" BootPartition = true und PrimaryPartition = true ") DeviceID abrufen / Format: Liste ') DO Setekh vor 8 Jahren 0
@Setekh Das ist falsch. `usebackq` erfordert Backquotes` \ `` nicht einfache Anführungszeichen `` ` DavidPostill vor 8 Jahren 0
Nein, nicht userbackq ... ('WMIC ...') Setekh vor 8 Jahren 0

2 Antworten auf die Frage

2
DavidPostill

Wie würde ich diesem Zeichen entkommen = Zeichen?

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

Es gibt zwei Probleme mit dem oben genannten:

  1. Bei der Verwendung müssen "usebackq"Sie den Befehl mit Anführungszeichen setzen, um ihn zu verarbeiten for.

  2. "Um die whereKlausel von muss ein Anführungszeichen stehen wmic.

Verwenden Sie die folgende Batchdatei:

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

Beispielausgabe:

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

Hinweis:

  • Die ECHO is off.Zeile wird ausgegeben, weil wmiceine letzte Leerzeile ausgegeben wird.

Lesen Sie weiter

Das habe ich versucht zu erklären, aber schreibe es so durcheinander, dass ich es nicht verstehen kann: D Setekh vor 8 Jahren 0
Das Zitieren hat für mich nicht funktioniert, aber das Gleichheitszeichen zu umgehen, wie es BillP3rd's Antwort getan hat. Burkart vor 5 Jahren 0
2
BillP3rd

Versuchen:

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

Das Zeichen "=" ist mit einem "^" gekennzeichnet. Beachten Sie auch, dass der wmicBefehl selbst in "Anführungszeichen" eingeschlossen ist, wie es von Ihrer Verwendung des usebackqParameters verlangt wird.