windows中批处理文件--收集服务器日志和上传日志至文件服务器

来源:互联网 发布:multisim连线优化 编辑:程序博客网 时间:2024/05/20 21:21

脚本实现的功能:收集远程服务器日志并上传内网共享目录
windows批处理文件是以“.bat”结尾的文本文件,可以先创建记事本,然后再重命名为“xxx.bat”,即可双击运行,系统会调用cmd.exe来运行该文件

这是代码详解,如想复制,最下面有源码:
echo –[message]显示信息

echo off

rem 该命令只是起一个注释的作用
rem 关闭回显,如果是echo off则关闭回显,这个回显是什么意思呢?其实就是显示命令本身
rem echo off就是关闭命令本身的显示,一般调试的时候才会使用echo on

rem 获取当前时间,比较复杂,就不分析了。格式为201706252136
set date=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%
rem %date%和%time%是系统内置的日期变量和时间变量

rem 复制出来的文件夹名字后缀
set Suffix=log

rem 设置IP地址用set ipx=xxx.xxx.xxx.xxx
rem 脚本支持系统盘是C盘的,写死在里面,如果不是C盘的,需要自己下面改一下参数

set ip1=192.168.XX.XX

rem ping远程IP一次,如果ping的通,拷贝日志,否则不拷贝
rem 然后写一个call(调用另一个其处理程序,并且不终止父批处理程序)调用CopyLogs 把IP地址以参数形式传入
ping -n 1 %ip1% && call :CopyLogs %ip1%

rem cmd 返回并将等待下一条命令
goto:eof

rem 拷贝日志函数块
:CopyLogs

set ipaddr=%1
set num=%ipaddr:.=_%

rem 创建远程管道链接
net use \%ipaddr% password /user:admin

echo ——-正在导出%ipaddr%的系统DUMP(蓝屏文件)——-
echo ——-这里使用了if else语句实现
if not exist \%ipaddr%\c\Windows.dmp(@echo)else(xcopy%ipaddr\Windows*.dmp “%cd%\日志目录\%date%-%Suffix%\IP_%num%\Dump\”)

set “systemLogDir=\%ipaddr%\c$\Windows\System32\winevt\Logs”
echo ——-正在导出%ipaddr%的系统日志——-
if not exist %systemLogDir%\App*.Evt* (@echo application log is not exist) else (xcopy %systemLogDir%\App*.Evt* “%cd%\%date%-%Suffix%\IP_%num%\Sys_Log\”)

echo ——-正在上传%ipaddr%的文本系统日志——-
echo ——-xcopy,相比于copy更高级一点,复制文件夹
xcopy “%cd%\%date%-%Suffix%” \192.168.xx.xx+目录 /e /y /k
rem 删除远程管道链接
net use \%ipaddr% /d /y

goto:eof

如下是源代码:

echo --[message]显示信息echo offset date=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%set Suffix=logset ip1=192.168.xx.xxping -n 1 %ip1% && call :CopyLogs %ip1%goto:eof:CopyLogsset ipaddr=%1set num=%ipaddr:.=_%rem 创建远程管道链接net use \\%ipaddr% password /user:adminif not exist \\%ipaddr%\c$\Windows\*.dmp (@echo 不存在目录) else (xcopy  \\%ipaddr%\c$\Windows\*.dmp   "%cd%\日志目录\%date%-%Suffix%\IP_%num%\Dump\")set "systemLogDir=\\%ipaddr%\c$\Windows\System32\winevt\Logs"if not exist %systemLogDir%\App*.Evt*  (@echo application log is not exist) else (xcopy %systemLogDir%\App*.Evt*    "%cd%\%date%-%Suffix%\IP_%num%\Sys_Log\")xcopy   "%cd%\%date%-%Suffix%"   \\192.168.xx.xx+目录 /e /y /krem 删除远程管道链接net use \\%ipaddr% /d /y
原创粉丝点击