tags:

views:

53

answers:

2

Hi, I need a way to store the current user's SID in a variable, I tried a lot of variants of:

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 

None are working

wmic path win32_useraccount where name='%UserName%' get sid should be returning 3 lines, i need the second one stored in a variabel

Can someone fix my script?

edit btw; I am using a .cmd file

A: 

This should fix it:

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%

note the "delims= " in the FOR loop. It will separate the input at spaces, that are contained at the end of the output ouf your WMI query.

The condition if not "%%a"=="SID" will be true for the second iteration and then assign the variable and break out of the loop.

Hope that helps.

Frank Bollack
thanks man, that dit it, sorry for the late reaction, I was to bussy doing other stuff
A: 

Another solution could be:

FOR /F "tokens=1,2 delims==" %%s IN ('wmic path win32_useraccount where name^='%username%' get sid /value ^| find /i "SID"') DO SET SID=%%t

See you.

Bauldenotas