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

时间:2012-11-09 09:14:51

标签: windows parsing command-line batch-file

我试图在命令行脚本中解析命令的输出。作为开始,我必须首先在变量中捕获命令的输出(我猜)。所以这就是我到目前为止所写的内容:

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”,如果那个单词在那里,我想显示一个窗口弹出窗口。

提前感谢您的帮助。

2 个答案:

答案 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的路径中。