Skip to main content

 路由器设置 > 新闻资讯 >

bat命令之windows服务器账号巡检

2014-02-26 00:23 浏览:

BAT这种古老的语言,虽然很简单,可以在实际利用中却真的很麻烦。。  

   需求:使用bat脚本定期巡检大批量windows服务器上的每个账号的信息。

 

   思路:Step 1:使用net user 命令

         S2:使用for循环嵌套net user 输出结果

         S3:目录名以日期加IP的形式命名

         S4:使用at命令建立计划任务,其实schtasks更优,还在研究中

         S5:使用 net use 网络共享驱动器,将输出结果copy集中网络一个位置

         s6: 使用landesk推送脚本

 

   解决方案:

1、net user 用户名 >>特定输出文件

2、for /f " tokens= delims= " %%i in (文件) do net user %%i >> 特定输出文件

3、获取日期

set a=%date:\=-%  rem 避免\显示与目录名冲突

获取IP

for /f "tokens=2 delims=:" %%i in ('ipconfig^|find /i "IPv4 "') do echo "%%i" |findstr 10 && set b=%%i && goto LABEL

rem 获取正确IP后跳转出for循环

4、at 1:00 /every:15 start \~lujing\userchk.bat rem 计划任务

5、网络共享,

net use q: \\IP\UserCHK\FFP  passwd/user:superadmin

copy E:\userchk\文件.txt q:\

 

虽然看起来很简单,但是涉及到动态变量赋值,动态变量取值,以及if语句,for循环多重取值结构,字符截断及替换,管道传递及逻辑判断。

基本上掌握了这些批处理可以算基本入门了,有时间再详解这些命令使用。。

源代码:

        if not exist E:\userchk mkdir E:userchk

  if not exist E:\userchk\usercheck.bat copy %~dp0usercheck.bat E:\userchk

  at |findstr "usercheck" || at 1:00 /every:15 start e:\usrchk\usercheck.bat

  set b=%date:~0,10%

  set b=%b:/=-%

  setlocal enabledelayedexpansion

  for /f "tokens=2 delims=:" %%i in ('ipconfig^|find /i "IPv4 "') do echo "%%i" |findstr 10 && set a=%%i && goto start || set a=no

  :start

  set a=%a: =%

  set c=%b%-%a%

  set "c=%c: =%"

  set n=0

  net user >>E:\userchk\"%c%-%computername%.txt"

  for /f "skip=4 tokens=1,2,3 delims= " %%i in ( E:\userchk\%c%-%computername%.txt ) do net user %%i && net user %%i >>E:\userchk\%c%-

  %computername%.txt & net user %%j >>E:\userchk\%c%-%computername%.txt & net user %%k >>E:\userchk\%c%-%computername%.txt & set /a

  n=1+!n!

  echo user'Num is !n!

  net use q: \\10.101.22.*\UserCHK\FFP passwd/user:superadmin

  copy E:\userchk\%c%-%computername%.txt q:\