如何将第二行输出存储到批处理中的变量中?

问题描述 投票:0回答:2

我想运行这个命令:

wmic useraccount where name='%username%' get sid

输出3行:

SID
12345
*blank space*

我需要将第二行的

sid
数字存储为变量。

batch-file
2个回答
4
投票
for /f "skip=1delims=" %%a in (
 'wmic useraccount where name="%username%" get sid'
) do set "sid=%%a"&goto next
:next

set "sid="
for /f "skip=1delims=" %%a in (
 'wmic useraccount where name="%username%" get sid'
) do if not defined sid set "sid=%%a"

skip=1
会跳过
wmic
命令输出的第一行(请注意,使用此格式,内部引号需要
"
)。从那里开始,在第一个示例中,
for
循环突然终止,在第二个示例中,变量
sid
被分配到跳过行之后的第一行,此后忽略后续行。


0
投票

我发现wmic行中=字符前面需要一个转义字符。如果没有转义字符,我在使用脚本时会收到“无效别名动词”消息。 stackoverflow - 无效别名动词

我对已接受答案的修改是:

set "sid="
for /f "skip=1 delims=" %%a in (
 'wmic useraccount where name^="%username%" get sid'
) do if not defined sid set "sid=%%a"
© www.soinside.com 2019 - 2024. All rights reserved.