在 /f 中转义“=”(等号)

use*_*778 6 windows shell-script escape-characters cmd.exe

我正在尝试在 Windows 的 shell 中的“FOR /F”中运行以下命令...

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

=ParentProcessId和PID%%的保持gettings替换一个空格。

结果是:

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

我将如何转义此字符 = 符号?

Bil*_*3rd 7

尝试:

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

“=”符号用“^”转义。另请注意,wmic根据您使用参数的要求,命令本身包含在“反引号”中usebackq


Dav*_*ill 2

我该如何转义这个字符 = 符号?

for /F "usebackq" %%b in (wmic process where ParentProcessId=%PID% get ProcessId) do (
Run Code Online (Sandbox Code Playgroud)

上述有两个问题:

  1. 使用时"usebackq"需要在要处理的命令两边加上反引号for

  2. 的子句"需要加引号。wherewmic

使用以下批处理文件:

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

输出示例:

F:\test>test
ProcessId
2508
10100
ECHO is off.
Run Code Online (Sandbox Code Playgroud)

笔记:

  • ECHO is off.行被输出,因为wmic输出最后一个空行。

进一步阅读