A typical output of net user command produces 3 columns of usernames with the last row containing up to three columns.
C:Users kreider>net user User accounts for \CTCRK-10 ------------------------------------------------------------------------------- Administrator DefaultAccount Guest LocalAdmin The command completed successfully.
To filter this, I’ll use a for loop and set 3 tokens. Tokens 2 and/or 3 could be empty when we get the last row, as you can see.
@echo off
setlocal
for /f "tokens=1-3" %%x in ('net users /domain^|find " " ') do (
call :process %%x
call :process %%y
call :process %%z
)
pause
::-----
:process
if "%1"=="" goto :eof
REM echo User is %1
for /f "tokens=1-3" %%a in ('net user %1 /domain ^| findstr /r "active"') do (
if "%%c"=="Yes" (
for /f "tokens=1-5" %%e in ('net user %1 /domain ^| findstr /r "logon"') do (
echo %1,ACTIVE,%%g %%h %%i
)
) ELSE (
echo %1,DISABLED
)
)
:: other user processing here
goto :eof