我正在尝试在 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 (
上述情况存在两个问题:
使用时
"usebackq"
需要在要处理的命令周围加上反引号for
。子句
"
两边需要加引号。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
输出最后一条空白行。
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 对于/f- 循环命令以执行另一个命令的结果。
- 西米克- Windows 管理规范命令。