错误:在Windows命令行文件中parsing命令的输出

我正试图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的路径中。