我试图在命令行脚本中解析命令的输出。作为开始,我必须首先在变量中捕获命令的输出(我猜)。所以这就是我到目前为止所写的内容:
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
任何想法为什么错误。在将输出存储在变量中之后,我该如何处理。我在输出中寻找一个特定的单词“XYZ”,如果那个单词在那里,我想显示一个窗口弹出窗口。
提前感谢您的帮助。
答案 0 :(得分:3)
它给你一个错误的原因是因为)
循环中的第一个for
有效地结束了循环,然后get
命令被单独处理,这不是识别。
您需要使用插入符^
来转义括号和=
。
FOR /F "tokens=2* delims= " %%A IN ('wmic process where^(name^="javaw.exe"^) get commandline') DO SET VAR=%%B
希望这有帮助
答案 1 :(得分:2)
您需要更改语法,但即使这样,您也无法获得所需的结果,因为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
)
)
将delim设置为space将在第一个空格处拆分该行,即使这是在javaw.exe的路径中。