我在批处理脚本中使用此行,该脚本成功地将用户的SID值存储到名为SID的变量中
FOR /F "tokens=1,2 delims==" %%s IN ('wmic path win32_useraccount where name^='%_curruser%' get sid /value ^| find /i "SID"') DO SET SID=%%t
我想修改它以在WMIC查询中包含“AND”,但我似乎无法让它工作。
正确的查询是:
wmic path win32_useraccount where "name='%USERNAME%' and Domain like 'HB%'" GET SID /VALUE
有人可以帮我翻译一下,以便将SID值存储到变量中吗?
答案 0 :(得分:1)
您需要在Domain like 'HB%'
中escape the %
percent character加倍,如下所示:
FOR /F "tokens=1,2 delims==" %%s IN ('
wmic path win32_useraccount where "name='%USERNAME%' and Domain like 'HB%%'" GET SID /VALUE ^| find /i "SID"
') DO for /F "tokens=*" %%i in ("%%t") do SET "SID=%%i"
此处for
循环
%%s
检索SID
值; %%i
删除返回值中的结尾回车(wmic
行为):每个输出行以0x0D0D0A
结尾(CR + CR + LF) )而不是普通0x0D0A
(CR + LF)。见Dave Benham的WMIC
and FOR /F
: A fix for the trailing <CR>
problem