将具有多个条件的WMIC查询批量存储到变量中

时间:2016-02-11 16:17:19

标签: batch-file scripting wmi-query wmic

我在批处理脚本中使用此行,该脚本成功地将用户的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值存储到变量中吗?

1 个答案:

答案 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