将具有多个条件的 WMIC 查询批量存储到变量中
Batch Store WMIC Query with multiple conditions into variable
我在批处理脚本中使用这一行,它成功地将用户的 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 值存储到变量中吗?
您需要 escape the %
percent character 在 Domain like 'HB%'
中加倍,如下所示:
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
删除值 returned 中结尾的 carriage return(wmic
行为):每个输出行以 0x0D0D0A
(CR+CR+LF) 而不是常见的 0x0D0A
(CR+LF). 结尾
参见 Dave Benham 的 WMIC
and FOR /F
: A fix for the trailing <CR>
problem
我在批处理脚本中使用这一行,它成功地将用户的 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 值存储到变量中吗?
您需要 escape the %
percent character 在 Domain like 'HB%'
中加倍,如下所示:
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
删除值 returned 中结尾的 carriage return(wmic
行为):每个输出行以0x0D0D0A
(CR+CR+LF) 而不是常见的0x0D0A
(CR+LF). 结尾
参见 Dave Benham 的 WMIC
and FOR /F
: A fix for the trailing <CR>
problem