我正试图parsing命令行脚本中的命令的输出 。 作为一个开始,我必须首先捕获命令的输出在一个variables(我猜)。 所以这是我迄今写的:
FOR /F "tokens=2* delims= " %%A IN ('wmic process where(name="javaw.exe") get commandline') DO SET VAR=%%B echo %VAR%
其中wmic process where(name="javaw.exe") get commandline
是我想要执行并保存输出的命令。 但是,执行此操作时出现以下错误。
get was unexpected at this time
任何想法为什么错误。 如何在将输出存储在一个variables中之后继续。 我在输出中寻找一个特定的单词“XYZ” ,如果那个单词在那里,我想显示一个窗口popup窗口。
先谢谢您的帮助。
它给你一个错误的原因是因为for
循环中的第一个循环有效地结束了循环,所以get
命令被单独处理,这是不被识别的。
您需要使用^
符号来转义括号和=
。
FOR /F "tokens=2* delims= " %%A IN ('wmic process where^(name^="javaw.exe"^) get commandline') DO SET VAR=%%B
希望这可以帮助
您需要更改语法,但是即使如此,您也不会得到所需的结果,因为wmic通常会响应多个行。
setlocal EnableDelayedExpansion FOR /F "tokens=* delims=" %%A IN ( '"wmic process where(name="javaw.exe") get commandline"') DO ( set "line=%%A" if "!line:XYZ=!" NEQ "!line!" ( echo The line contains XYZ ) )
并且设置delims到空格会将第一个空格处的行分割,即使这个行在javaw.exe的路径中。