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

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

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

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

ParentProcessId 和 %PID% 之间的部分=一直被空格替换。

结果是:

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

我该如何逃避这个字符=符号?

答案1

尝试:

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

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

答案2

我该如何逃避这个字符=符号?

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

上述情况存在两个问题:

  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

示例输出:

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

笔记:

  • ECHO is off.输出该行是因为wmic输出最后一条空白行。

进一步阅读

相关内容