zoukankan      html  css  js  c++  java
  • windows下常用的几个批处理脚本

    1.windows下对比两个文件内容,有差异则执行一个任务:

    适用场景:比如你的数据库备份结果的日志每天会形成一个文件,如下图,你可以通过此脚本检测到文件的变化,并执行发送告警邮件通知你数据库备份异常。

    对比两个文件.bat

    rem 检查Linux服务器上的异地备份情况并报警:yes.log为正常情况下的日志,如果新的日志和正常不符则报警。
    rem 设置取当前的时间,格式:2018-02-06
    set now=%Date:~0,4%-%Date:~5,2%-%Date:~8,2%
    rem 当天的日志结果和标准日志对比,如一样则ok,如不同则触发邮件脚本“sendmillog.vbs”
    fc /b %now%.log yes.log &&echo ok|| call sendmaillog.vbs

    sendmaillog.vbs

    'vbs发邮件 By 依梦琴瑶
     
    '设置发信人邮箱地址
    Sender = "xxxx.qq.com"
    
    '设置发信人邮箱密码
    Sender_PassWord = "xxxx"
    
    '设置发信人邮箱SMTP服务器地址
    Smtp = "smtp.xxx.net"
    
    '设置SMTP服务器端口
    Port = 25
    
    '设置收信人邮箱地址
    Receiver = "xxxx@qq.com"
    
    '设置附件文件路径。
    'Attachment = ""
    
    '设置邮件主题
    Subject = "数据备份异常"
    
    '设置正文文本路径。
    Text = "数据备份异常,请查看日志."
    
    NameSpace = "http://schemas.microsoft.com/cdo/configuration/"
    Set Email = CreateObject("CDO.Message")
    Email.From = Sender
    Email.To = Receiver
    Email.Subject = Subject
    Email.Textbody = Text
    'Email.AddAttachment Attachment
    With Email.Configuration.Fields
        .Item(NameSpace&"sendusing") = 2
        .Item(NameSpace&"smtpserver") = Smtp
        .Item(NameSpace&"smtpserverport") = Port
        .Item(NameSpace&"smtpauthenticate") = 1
        .Item(NameSpace&"sendusername") = Sender
        .Item(NameSpace&"sendpassword") = Sender_PassWord
        .Item(NameSpace&"smtpconnectiontimeout") = 60
        .Update
    End With
    Email.Send
    Set Email=Nothing
    内容较长请展开查看

    2.查看文件是否生成,或文件中是否有字段,加报警

    适用场景:查看每天的数据库备份文件是否生成,没有生成则报警;查看每天的备份日志文件中是否有备份成功的字段,没有则报警;

    查找没有某后缀的文件则邮件报警.bat

    @echo off
    rem 设置取当前的时间,格式:2018-02-06
    set now=%Date:~0,4%-%Date:~5,2%-%Date:~8,2%
    if exist "d:	est\%now%.dmp" (echo ok ) else (call sendmaildb.vbs)

    查找某文件没有某字符则邮件报警.bat

    set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%
    
    rem 检查windows服务器上的备份情况并报警:查看日志文件中有没有正常的结尾信息,如果没有则报警。
    
    find /i "Export terminated successfully without warnings." D:	estuser%now%.log>nul
    if %errorlevel% EQU 0  (echo ok) else (call sendmaillog.vbs)

    查找某文件有某字符则邮件报警.bat

    @echo off
    find /i "ORA-" D: est*.log>nul
    if %errorlevel% EQU 0 (call sendmaillog.vbs) else (echo ok)
    pause

    3.删除过期的文件

    适用场景:在磁盘容量有限的情况下,只保留最近一个周的备份数据,则需要我们每天自动删除七天以前的备份数据

    rem 查找test下7天前的备份并删除
    set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%
    rem forfiles /p "D:	est" /s /m *.* /d -7 /c "cmd /c del @path"

     将脚本日志进行导出:

    方法一:

    @echo off

    (

    echo 开始

    .......

    echo 完成!!!

    ) >> d:/test/dbbak.log 2> d:/test/dbbak_error.log

     方法2:

    创建一个test.bat 内容为执行脚本和日志输出,如下

    D:scriptggappbak.cmd > d:/test/dbbak.log 2> d:/test/dbbak_error.log

     到时候你执行test.bat就行

    以上脚本需要配合win计划任务执行。

     4.检测程序是否正常启动,未启动则尝试启动。

    :1
    tasklist | findstr /i nginx.exe > nul 2>nul
    if %ERRORLEVEL%==1 (start nginx) else (exit)
    ping 127.1 -n 20 >nul 2>nul
    goto 1

     5.备份脚本

    依次执行:复制→压缩→ftp传输到异地→删除临时文件

    启动脚本:startbackup.cmd

    D:scriptggappbak.cmd > D:scriptlog.txt 2> D:scripterror.txt

    备份脚本:

    ggappbak.cmd

    rem 获取当前服务器的IP地址,无需改动
    for /f "tokens=2 delims=:" %%q in ('ipconfig^|find /i "ipv4"') do (set hostip=%%q )
    set ipv4=%hostip:~1,-1%
    
    rem 获取当前系统日期,无需改动
    set today=%date:~0,4%%date:~5,2%%date:~8,2%
    
    rem 创建备份存放目录,目录命名为当前系统日期
    mkdir D:IPIBAK%today%
    
    rem 拷贝IPI目录下的所有文件到备份目录
    xcopy /E /Y /H /K /R "D:ipi" "D:IPIBAK\%today%"
    
    rem 调用WinRAR程序对备份好的文件目录进行压缩,压缩后的文件用IP地址命名
    "D:Program FilesWinRARWinRAR.exe" m -r -ep1 "D:IPIBAK\%ipv4%_%today%.rar" "D:IPIBAK\%today%"
    
    set ftpfilename=autoftp.cfg
    
    rem ============== 创建FTP传输配置文件 ============== 
    rem 连接指定端口的ftp
    echo open 192.168.10.2 21>            "%ftpfilename%"
    
    rem FTP用户名
    echo ggappbak>>                    "%ftpfilename%"
    
    rem FTP密码
    echo password>>                 "%ftpfilename%"
    
    rem FTP常见配置项
    echo prompt>>                     "%ftpfilename%"
    echo binary>>                     "%ftpfilename%"
    echo quote opts utf8 off>>             "%ftpfilename%"
    
    rem 定义向远程FTP上传压缩好的备份文件
    echo put D:IPIBAK%ipv4%_%today%.rar>>     "%ftpfilename%"
    echo bye>>                     "%ftpfilename%"
    
    rem ================================================= 
    
    rem 执行ftp命令上传压缩好的备份文件,根据实际情况调整远程FTP服务器的IP地址
    ftp -s:"%ftpfilename%"
    
    rem 清理本地产生的临时文件
    rd /s /Q D:IPIBAK
    del "%ftpfilename%"
  • 相关阅读:
    Cypress系列(32)- url() 命令详解
    Cypress系列(31)- title() 命令详解
    Cypress系列(30)- 操作浏览器的命令
    Cypress系列(29)- 获取页面全局对象的命令
    Cypress系列(28)- scrollTo() 命令详解
    Cypress系列(27)- scrollIntoView() 命令详解
    Cypress系列(26)- 聚焦与失焦命令的详解
    Cypress系列(25)- submit() 命令详解
    Cypress系列(24)- 操作页面元素的命令
    urlencoded、json 格式详解
  • 原文地址:https://www.cnblogs.com/-abm/p/8420974.html
Copyright © 2011-2022 走看看