中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 06:39
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何批量删除不包含的用户 查看 1,317 回复 11
楼 主 如何批量删除不包含的用户 发表于 2010-03-20 22:45 ·  中国 上海 东方有线
初级用户
★★
积分 75
发帖 75
注册 2009-10-23 10:23
16年会员
UID 153553
性别 男
状态 离线
我想恢复系统默认的administrator和禁用的guest用户,其它多余的用户全部删除
怎么写会比较好
2 发表于 2010-03-20 23:23 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
既然administrator是系统默认,你想咋恢复?
3 发表于 2010-03-21 01:56 ·  中国 上海 长宁区 电信
高级用户
★★★
积分 916
发帖 377
注册 2004-03-08 00:00
22年会员
UID 19523
性别 男
状态 离线
很久之前有这需求,后来用ntfs禁止nnusr.cpl lusr.msc
%systemroot%\system32\cacls.exe %systemroot%\system32\nusrmgr.cpl /e /d onlyit
%systemroot%\system32\cacls.exe %systemroot%\system32\lusrmgr.msc /e /d onlyit
就基本没这烦恼了

删除用户.cmd

cscript allusername.vbs>%tmp%\a.txt
for /f "tokens=* skip=3" %%i in (%tmp%\a.txt) do find "%%i" userlist.ini||net user /delete "%%i"
pause


allusername.vbs


Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set colAccounts = GetObject("WinNT://" & strComputer & "")
colAccounts.Filter = Array("user")
For Each objUser In colAccounts
Wscript.Echo objUser.Name
Next


userlist.ini


administrator
guest
4 发表于 2010-03-27 03:02 ·  中国 上海 东方有线
初级用户
★★
积分 75
发帖 75
注册 2009-10-23 10:23
16年会员
UID 153553
性别 男
状态 离线
果然是高手,高手都有同样的需求
5 发表于 2010-03-27 03:42 ·  中国 上海 东方有线
初级用户
★★
积分 75
发帖 75
注册 2009-10-23 10:23
16年会员
UID 153553
性别 男
状态 离线
在你的基础上该了一下,只需要一个文件就可以了

:禁用Administrator以外的所有用户
set f=%temp%\GetAllusername.vbs
echo.>%f%
echo Set objNetwork = CreateObject("Wscript.Network") >>%f%
echo strComputer = objNetwork.ComputerName >>%f%
echo Set colAccounts = GetObject("WinNT://" ^& strComputer ^& "") >>%f%
echo colAccounts.Filter = Array("user") >>%f%
echo For Each objUser In colAccounts >>%f%
echo Wscript.Echo objUser.Name >>%f%
echo Next >>%f%

set ff=%temp%\GetAllusername.txt
cscript %f%>%ff%

set fff=%temp%\userlist.ini
echo Administrator >%fff%
:删除
:for /f "tokens=* skip=3" %%i in (%ff%) do find "%%i" %fff%||net user /delete "%%i"
:禁用
for /f "tokens=* skip=3" %%i in (%ff%) do find "%%i" %fff%||net user /active:n "%%i"
6 发表于 2010-03-27 05:33 ·  中国 台湾 台湾宽频通讯顾问股份有限公司
初级用户
★★
积分 68
发帖 64
注册 2009-05-23 20:43
17年会员
UID 145803
性别 男
状态 离线
如何指定Windows DC (2000) 下的OU建立账号 (Bat 与VBS均可 ),谢谢 !
7 发表于 2010-03-28 15:44 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
BAT可以实现,调个VBS干啥?
8 发表于 2010-03-28 19:50 ·  中国 上海 东方有线
初级用户
★★
积分 75
发帖 75
注册 2009-10-23 10:23
16年会员
UID 153553
性别 男
状态 离线
Originally posted by HAT at 2010-3-28 15:44:
BAT可以实现,调个VBS干啥?



楼主给的是vbs,bat不会所以将就着用,
net user出来的结果不是一行一个用户名
9 发表于 2010-03-28 20:47 ·  中国 台湾 台湾宽频通讯顾问股份有限公司
初级用户
★★
积分 68
发帖 64
注册 2009-05-23 20:43
17年会员
UID 145803
性别 男
状态 离线
net user指令可以指定 OU ?
10 发表于 2010-03-28 20:51 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
Originally posted by czweb at 2010-3-28 19:50:



楼主给的是vbs,bat不会所以将就着用,
net user出来的结果不是一行一个用户名

那就for /f解析他呗
11 发表于 2010-05-22 19:43 ·  中国 台湾 台湾宽频通讯顾问股份有限公司
初级用户
★★
积分 68
发帖 64
注册 2009-05-23 20:43
17年会员
UID 145803
性别 男
状态 离线
如何指定Windows DC (2000) 下的OU建立账号 (Bat 与VBS均可 ),谢谢 !
12 发表于 2010-05-23 08:01 ·  中国 北京 CNNIC会员北京电信互联网数据中心节点
初级用户
积分 49
发帖 43
注册 2007-01-20 03:28
19年会员
UID 77088
性别 男
状态 离线
试试我这个笨办法:

@echo off
for /f "skip=4 tokens=1,2,3" %%a in ('net user') do (
if not "%%a"=="命令成功完成。" (
if /i not "%%a"=="administrator" (if /i not "%%a"=="guest" net user %%a /delete)
if /i not "%%b"=="administrator" (if /i not "%%b"=="guest" net user %%b /delete)
if /i not "%%c"=="administrator" (if /i not "%%c"=="guest" net user %%c /delete)
)
)
net user guest /active:no
论坛跳转: