我需要一种将当前用户的 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 文件。
这应该解决它:
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"第二次迭代条件为真,然后分配变量并跳出循环。
希望有帮助。