2、检查系统里面是否有非法增加和减少的用户账号
注意:
(1)假设文件 D:\BatHome_User_List.txt 里面保存着所有的合法用户的列表
(2)需要分别找出当前系统里面非法增加的账号和减少的账号
分析:
批处理查看用户帐号的命令是NET USER,不过,这个看不到隐藏帐号(以$结束的用户名)
结果以表方式列出,一行三个
用户名最多20个字符,后面用空格补全到25个字符
用户名中是是可以使用空格的,直接用For来分割可能会有问题
1.处理NET USER的结果,循环去D:\BatHome_User_List.txt 验证是否存在,计算出合法用户,非法增加的帐号
2.NET USER的结果找个地方存起来
3.循环D:\BatHome_User_List.txt,与NET USER的结果比较验证,检查减少的帐号- @ECHO OFF
-
- :: NET USER结束语
- SET @NETUSER_EndWord=命令成功完成。
- :: 合法用户列表
- SET @UserList=D:\BatHome_User_List.txt
- :: 比较时使用的Log
- SET @CompareLog=D:\BatHome_User_List_Compare.log
-
- REM 读取现有系统中有用户,随便检查然后输出到@CompareLog
- DEL /Q %@CompareLog%>NUL 2>NUL
-
- SET /A r1=0,r2=0,r3=0
- SET k=
- SET u=
- FOR /F "tokens=*" %%a IN ('NET USER') DO (
- REM 发现结束语,终止输出
- ECHO %%a|FIND "%@NETUSER_EndWord%" >NUL&&SET k=
-
- IF DEFINED k (
- SET s=%%a
- FOR /L %%b IN (0,25,50) DO (
- REM 截取20位
- CALL;SET "u=%%s:~%%b,20%%"
- REM 去掉左右空格
- FOR /F "delims=" %%d IN ('ECHO %%u%%') DO SET "u=%%~nxd"
-
- FOR /F %%c IN ('ECHO %%u%%') DO (
- IF "%%c" NEQ "%%u%%" (
- FINDSTR /B /E "%%c" %@UserList%>NUL&&SET K2=0||SET K2=1
- FOR /F %%d IN ('ECHO %%K2%%') DO (
- IF "%%d"=="0" (
- SET /A r1+=1
- ECHO %%c [合法用户]
- ECHO %%c [合法用户]>>%@CompareLog%
- ) ELSE (
- SET /A r2+=1
- ECHO %%c [非法增加]
- ECHO %%c [非法增加]>>%@CompareLog%
- )
- )
- )
- )
- )
- ) ELSE (
- REM 以-为开始行,设置k用于纪录输出
- ECHO %%a|FIND "-" >NUL&&SET k=OK
- )
- )
- REM 读取现有列表中有用户,检查减少
- FOR /F "tokens=*" %%a IN (%@UserList%) DO (
- FINDSTR /B "%%a [" %@CompareLog%>NUL&&SET K2=0||SET K2=1
- FOR /F %%b IN ('ECHO %%K2%%') DO (
- IF "%%b"=="1" (
- SET /A r3+=1
- ECHO %%a [不明减少]
- ECHO %%a [不明减少]>>%@CompareLog%
- )
- )
- )
- ECHO =============================================================================
- ECHO 比较后%r1%位用户与列表一致,%r3%位用户不明减少,%r2%位用户非法增加
-
- DEL /Q %@CompareLog%>NUL 2>NUL
-
- PAUSE
- EXIT /B
复制代码 之后题目好难啊 |