我想运行这个命令:
wmic useraccount where name='%username%' get sid
输出3行:
SID
12345
*blank space*
我需要将第二行的
sid
数字存储为变量。
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
被分配到跳过行之后的第一行,此后忽略后续行。
我发现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"