将 SID 存储在变量中

use*_*191 5 cmd batch-file

我需要一种将当前用户的 SID 存储在变量中的方法,我尝试了很多变体:

setlocal enableextensions 
for /f "tokens=*" %%a in ( 
'"wmic path win32_useraccount where name='%UserName%' get sid"'
) do ( 
if not "%%a"==""
set myvar=%%a
echo/%%myvar%%=%myvar% 
pause 
endlocal 
Run Code Online (Sandbox Code Playgroud)

没有人在工作。

wmic path win32_useraccount where name='%UserName%' get sid 应该返回 3 行,我需要将第二行存储在变量中。

有人可以修复我的脚本吗?

编辑:我正在使用 .cmd 文件。

Fra*_*ack 5

这应该解决它:

for /f "delims= " %%a in ('"wmic path win32_useraccount where name='%UserName%' get sid"') do (
   if not "%%a"=="SID" (          
      set myvar=%%a
      goto :loop_end
   )   
)

:loop_end
echo %%myvar%%=%myvar%
Run Code Online (Sandbox Code Playgroud)

注意"delims= "FOR 循环中的 。它将以空格分隔输入,这些空格包含在 WMI 查询的输出末尾。

if not "%%a"=="SID"第二次迭代条件为真,然后分配变量并跳出循环。

希望有帮助。