Board logo

标题: [系统相关] bathome比赛题第二题 [打印本页]

作者: ADSL0125    时间: 2013-8-27 21:10     标题: bathome比赛题第二题

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的结果比较验证,检查减少的帐号
  1. @ECHO OFF
  2. :: NET USER结束语
  3. SET @NETUSER_EndWord=命令成功完成。
  4. :: 合法用户列表
  5. SET @UserList=D:\BatHome_User_List.txt
  6. :: 比较时使用的Log
  7. SET @CompareLog=D:\BatHome_User_List_Compare.log
  8. REM 读取现有系统中有用户,随便检查然后输出到@CompareLog
  9. DEL /Q %@CompareLog%>NUL 2>NUL
  10. SET /A r1=0,r2=0,r3=0
  11. SET k=
  12. SET u=
  13. FOR /F "tokens=*" %%a IN ('NET USER') DO (
  14. REM 发现结束语,终止输出
  15. ECHO %%a|FIND "%@NETUSER_EndWord%" >NUL&&SET k=
  16. IF DEFINED k (
  17. SET s=%%a
  18. FOR /L %%b IN (0,25,50) DO (
  19. REM 截取20位
  20. CALL;SET "u=%%s:~%%b,20%%"
  21. REM 去掉左右空格
  22. FOR /F "delims=" %%d IN ('ECHO %%u%%') DO SET "u=%%~nxd"
  23. FOR /F %%c IN ('ECHO %%u%%') DO (
  24. IF "%%c" NEQ "%%u%%" (
  25. FINDSTR /B /E "%%c" %@UserList%>NUL&&SET K2=0||SET K2=1
  26. FOR /F %%d IN ('ECHO %%K2%%') DO (
  27. IF "%%d"=="0" (
  28. SET /A r1+=1
  29. ECHO %%c [合法用户]
  30. ECHO %%c [合法用户]>>%@CompareLog%
  31. ) ELSE (
  32. SET /A r2+=1
  33. ECHO %%c [非法增加]
  34. ECHO %%c [非法增加]>>%@CompareLog%
  35. )
  36. )
  37. )
  38. )
  39. )
  40. ) ELSE (
  41. REM 以-为开始行,设置k用于纪录输出
  42. ECHO %%a|FIND "-" >NUL&&SET k=OK
  43. )
  44. )
  45. REM 读取现有列表中有用户,检查减少
  46. FOR /F "tokens=*" %%a IN (%@UserList%) DO (
  47. FINDSTR /B "%%a [" %@CompareLog%>NUL&&SET K2=0||SET K2=1
  48. FOR /F %%b IN ('ECHO %%K2%%') DO (
  49. IF "%%b"=="1" (
  50. SET /A r3+=1
  51. ECHO %%a [不明减少]
  52. ECHO %%a [不明减少]>>%@CompareLog%
  53. )
  54. )
  55. )
  56. ECHO =============================================================================
  57. ECHO 比较后%r1%位用户与列表一致,%r3%位用户不明减少,%r2%位用户非法增加
  58. DEL /Q %@CompareLog%>NUL 2>NUL
  59. PAUSE
  60. EXIT /B
复制代码
之后题目好难啊
作者: xpw    时间: 2013-8-28 22:30

6个嵌套,头都晕了..




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2