我正在尝试编写一个批处理文件来测试所有本地组并报告用户是否属于该组。
这是我的代码:
echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%G in ('net localgroup') do (
set "group=!%%G"
REM Process only real group names
if "!group:~0,1!"=="*" (
set group=!group:~1!
REM Check if the user is in the group
net localgroup "!group!" | find /i "!user!"
if !ERRORLEVEL! equ 0 (
echo !user! belongs to group !group!
)
)
)
问题在于,无论用户是否在组中,ERRORLEVEL 总是返回 1。
我真的不知道该尝试什么。我尝试在管道中或 for 循环中搜索 ERRORLEVEL 的行为,因为我猜这就是问题所在,但我一直在努力寻找有帮助的答案。
您的代码中显然存在一些印刷错误。更不用说丢失代码了。但是,您的代码可以像这样简单。
@echo off
set /p "_user=Enter name of user:"
for /f "tokens=1 delims=*" %%G in ('net localgroup ^| findstr /L "*"') do (
net localgroup "%%~G" | find /i "%_user%" > nul 2>&1 && echo %_user% belongs to group %%~G
)