1

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

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

在此先感谢您的帮助。

4

2 回答 2

3

它给你一个错误的原因是因为循环中的第一个)有效for地结束了循环,然后该get命令被单独处理,这是无法识别的。

您需要使用插入符号^来转义括号和=.

FOR /F "tokens=2* delims=    " %%A IN ('wmic process where^(name^="javaw.exe"^) get commandline') DO SET VAR=%%B

希望这可以帮助

于 2012-11-09T09:26:38.227 回答
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
     )
)

并且将 delims 设置为空格将在第一个空格处分割行,即使这是在 javaw.exe 的路径中。

于 2012-11-09T09:35:00.010 回答