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

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

对比两个文件.bat

rem 检查Linux服务器上的异地备份情况并报警:yes.log为正常情况下的日志,如果新的日志和正常不符则报警。
rem 设置取当前的时间,格式:2018-02-06
set now=%Date:~,%-%Date:~,%-%Date:~,%
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 = '设置收信人邮箱地址
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") =
.Item(NameSpace&"smtpserver") = Smtp
.Item(NameSpace&"smtpserverport") = Port
.Item(NameSpace&"smtpauthenticate") =
.Item(NameSpace&"sendusername") = Sender
.Item(NameSpace&"sendpassword") = Sender_PassWord
.Item(NameSpace&"smtpconnectiontimeout") =
.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:\test\%now%.dmp" (echo ok ) else (call sendmaildb.vbs)

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

set now=%Date:~,%%Date:~,%%Date:~,%

rem 检查windows服务器上的备份情况并报警:查看日志文件中有没有正常的结尾信息,如果没有则报警。

find /i "Export terminated successfully without warnings." D:\test\user%now%.log>nul
if %errorlevel% EQU (echo ok) else (call sendmaillog.vbs)

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

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

3.删除过期的文件

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

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

将脚本日志进行导出:

方法一:

@echo off

(

echo 开始

.......

echo 完成!!!

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

方法2:

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

D:\script\ggappbak.cmd > d:/test/dbbak.log 2> d:/test/dbbak_error.log

到时候你执行test.bat就行

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

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

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

 5.备份脚本

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

启动脚本:startbackup.cmd

D:\script\ggappbak.cmd > D:\script\log.txt 2> D:\script\error.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 Files\WinRAR\WinRAR.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%"

windows下常用的几个批处理脚本的更多相关文章

  1. Windows下Oracle数据库自动备份批处理脚本

    expdb命令版本 @echo off REM ########################################################### REM # Windows Se ...

  2. windows下自动删除过期文件的脚本

    windows下自动删除过期文件的脚本 前言: 比如日志文件每天都产生,时间长了就会有很大的一堆垃圾.整理一下 定时删除文件的方法. 正文: Windows: 定时删除tomcat日志和缓存.可以保留 ...

  3. windows下常用快捷键

    windows下常用快捷键: 显示桌面: win徽标+D 打开资源管理器: win徽标+E 打开任务管理器: Ctrl+Alt+delete 任务切换: Alt+Tab 应用程序中窗口之间的切换: C ...

  4. Windows下常用的100个CMD指令以及常见的操作

    gpedit.msc—–组策略 2. sndrec32——-录音机 3. Nslookup——-IP地址侦测器 ,是一个 监测网络中 DNS 服务器是否能正确实现域名解析的命令行工具. 它在 Wind ...

  5. windows下常用cmd命令

    CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本)1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr. ...

  6. [转]Windows 下常用盗版软件的替代免费软件列表

    当您看完这篇文章,我相信您完全可以把您 Windows 系统里安装的盗版软件清理干净而不影响您的任何工作.如果您仍然希望并且喜欢.享受做一个盗版软件用户的话,那也没有办法,但是请您记住,非常非常重要的 ...

  7. windows下常用的一些shell命令

    看的视频上都是linux系统的shell命令,和windows区别很多.所以整理了windows常用的一些shell命令. 注意:并不是每个都试验过,使用时还需自己验证下. 学system和os,su ...

  8. windows下常用的操作命令及dos命令

    常用windows运行命令mstsc---远程桌面连接regedit.exe---打开注册表services.msc---打开服务管理器rsop.msc---组策略结果集taskmgr---任务管理器 ...

  9. Windows下常用软件工具的命令

    Linux上主要操作是命令,懂一点linux知识的都知道,其实windows下边很多工具也是可以用命令来操作打开的,这样会提高效率,节省很多的时间.下边就记录一下常用的命令. 一.常用命令 1.远程桌 ...

随机推荐

  1. Python实现selenium回放时间设置

    一般在做selenium时会有,回放快慢的需求. 实现思路: 1.一般写selenium会自定义findelement函数,来实现查找元素. 2.在查找函数上加个睡眠时间的装饰器,函数执行完等待若干秒 ...

  2. sqli-labs(九)_COOKIE处注入

    第二十关: 这关是一个Cookie处的注入,输入正确的账号密码后,会跳到index.php页面,如下图 这个时候再访问登陆页面的时候http://localhost/sqli-labs-master/ ...

  3. hive javaapi 002

    默认开启10000端口开启前,编辑hive-site.xml设置impersonation,防止hdfs权限问题,这样hive server会以提交用户的身份去执行语句,如果设置为false,则会以起 ...

  4. MySQL创建外键约束的报错Error : Can't create table '#sql-534_185' (errno: 150)

    总得来说是因为两个表的字段类型不一致,例如: 两个字段的类型或大小不严格匹配,一个为tinyint,另一个为char:或一个为int(10)另一个为int(9)也是不行的,即使都为int(10),但一 ...

  5. <5>Cocos Creator 脚本简介

    1.创建脚本 在资源管理器窗口中点击鼠标右键,显示菜单中点击新建,选择新建的脚本类型,这里举例就选择菜单中的JavaScript,或者如下图点击创建按钮也可. 新建后就会在资源管理器中出现一个NewS ...

  6. ling join 报错The specified LINQ expression contains references to queries that are associated with different cont

    The specified LINQ expression contains references to queries that are associated with different cont ...

  7. java 使用jacob把word转pdf

    一.使用前要下载必要包及文件 链接: https://pan.baidu.com/s/1nvutQxb 密码: qgpi 二.引包和dll文件 1.引包:eclipse引包就不用说了,idea引包步骤 ...

  8. Spark学习之路 (十七)Spark分区

    一.分区的概念 分区是RDD内部并行计算的一个计算单元,RDD的数据集在逻辑上被划分为多个分片,每一个分片称为分区,分区的格式决定了并行计算的粒度,而每个分区的数值计算都是在一个任务中进行的,因此任务 ...

  9. linux常用命令:rm 命令

    昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所 ...

  10. 数据库中的undo日志、redo日志

    MySQL中有六种日志文件,分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log).一 ...