我需要创建一个批处理脚本来禁用计算机的所有本地用户帐户或列出所有用户的方法,一个在另一个之下。
我尝试使用以下命令生成文件:
net user > %systemroot%\users.txt | findstr /I adm
但该命令会返回同一行中的所有用户。
如果有人知道如何在一个单独的行中生成每个用户,那对我也有帮助。
答案 0 :(得分:0)
这是一个有效的代码段:
for /F "tokens=1* delims==" %%G in (
'wmic USERACCOUNT where "Name!='Administrator'" get Name /value'
) do for /F "tokens=*" %%x in ("%%H") do (
echo %%x
rem some further command(s) here
)
for
循环
%%G
检索Name
值(在第二个标记中,%%H
); %%x
删除返回值中的结尾回车(wmic
行为:每个输出行以0x0D0D0A
结尾,而不是公共0x0D0A
}),请参阅下面的示例。示例(从我的命令行窗口复制和粘贴):
==>for /F "tokens=1* delims==" %G in ('wmic USERACCOUNT where "Name!='Administra
tor'" get Name /value') do @echo "%H"
""
""
"Guest
""
""
"Edgar
""
""
"Allan
""
""
"Poe
""
""
""
==>for /F "tokens=1* delims==" %G in ('wmic USERACCOUNT where "Name!='Administra
tor'" get Name /value') do @for /F "tokens=*" %x in ("%H") do @echo "%x"
"Guest"
"Edgar"
"Allan"
"Poe"
==>
答案 1 :(得分:0)
我不相信net.exe可以将它们作为单独的行输出,但您可以使用带有call
的{{1}}语句将该行分成单独的变量。
shift
答案 2 :(得分:0)
这是解决了我的代码:
for /f "delims=" %%a in ('net user ^| findstr -V "Contas de usu" ^| findstr -V "Comando conc" ^| findstr -V "\-" ^| findstr -V "User accounts" ^| findstr -V "The command"') do (
for %%b in (%%a) do (
if not "%%b" == "Administrador" (
if not "%%b" == "Administrator" (
if not "%%b" == "Convidado" (
Net user %%b /active:no
) else (
for /f "delims=" %%c in ('ver ^| findstr /i "5\.1\."') do (
set version=%%c
)
if not {"!version!"} == {""} (
Net user "Convidado" /active:yes
) else (
Net user "Convidado" /active:no
)
)
) else (
Net user "Administrator" /active:yes
)
) else (
Net user "Administrador" /active:yes
)
)
)
答案 3 :(得分:0)
WMIC USERACCOUNT WHERE localaccount=true set disabled=true
使用管理员权限运行它。