• Windows cmd,dos 命令行的bat文件定时备份数据库数据(详细例子介绍dos延时)


    dos set 命令

    set /a var=12 /a参数表示表达式 ,var=3;
    set var=1+2, 没有参数,直接设置变量的值 ,var=1+2
    set /p var=“变量的值” /p 表示提示语

    1:新建txt文件,修改为bat文件,复制一下代码进去

    cd C:\Program Files\MySQL\MySQL Server 5.6\bin
    if %time:~0,2% leq 9 (set hour=0%time:~1,1%) else (set hour=%time:~0,2%)
    mysqldump -u root -proot jeecg_test_local ntcp_data_2022111621> d:/"ntcp_data_%date:~0,4%%date:~5,2%%date:~8,2%%hour%.sql"
    
    • 1
    • 2
    • 3

    2:备份1个月前的数据(通过改set /a b=%a%-1,备份任意月份的),按小时定时备份输出sql数据库表

    @echo off
    
    :set date
    set a=%date:~5,2%
    set r=%date:~8,2%
    if %a:~0,1%==0 set /a a=%a:~1,1%
    rem ::月份小于10会有0,只取个位,方便加减
    set a1=%date:~0,4%
    rem 备份1个月前的数据
    set /a b=%a%-1
    if %b% lss 0 (set /a a2=%date:~0,4%-1
    set /a a3=%b%+12) else (set /a a2=%date:~0,4%
    set /a a3=%b%)
    rem 循环24小时时间加上去,c代表小时,d代表赋值
    set c=0
    set d=0
    :loop
    rem 定时器1秒循环一次,
    if %c% lss 10 (set d=0%c%) else (set d=%c%)
    
    rem 定时1秒
    rem echo.wscript.sleep(1000)>sleep.vbs
    rem cscript //nologo sleep.vbs
    rem del sleep.vbs
    
    rem 切换到mysql的bin目录下
    cd C:\Program Files\MySQL\MySQL Server 5.6\bin
    rem mysqldump -h localhost -u root -proot --databases 数据名 --tables  表名>
    mysqldump -u root -proot jeecg_test_local ntcp_data_%a2%%a3%%r%%d%> d:/"ntcp_data_%a2%%a3%%r%%d%.sql"
    
    echo %a2%%a3%%r%%d%
    set /a c+=1
    if %c% lss 24 goto :loop
    
    pause
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    3:通过设置分钟延时,来自动变化时钟和天数

    @echo off
    
    :: 分钟数值
    set minute=%time:~3,2%
    
    :: 时钟数值
    set hours=%time:~0,2%
    
    :: 天数值
    set day=%date:~8,2%
    
    :: 月数值
    set month=%date:~5,2%
    
    :: 年数值
    set year=%date:~0,4%
    
    ::分钟小于10会有0,只取个位,方便加减
    if %minute:~0,1%==0 set /a minute=%minute:~1,1%
    
    ::小时小于100
    if %hours% lss 10 set hours=0%time:~1,1%
    
    ::设置延时时间,延时2分钟,可以试试延时2个小时2*60
    set delayMinute=2*60*24
    
    ::延时小时
    set /a delayHours=%delayMinute%/60
    
    ::延时天数
    set /a delayday=%delayMinute%/60/24
    
    set /a minuteDelay=%minute%+ %delayMinute%
    echo 1----%minuteDelay%
    
    rem ::跨小时处理  geq大于或等于
    if %minuteDelay% geq 60 set /a hours=%hours%+%minuteDelay%/60 &  set /a minuteDelay=%minuteDelay%-%delayMinute%
    
    rem ::分钟延时后小于100
    if %minuteDelay% lss 10 set minuteDelay=0%minuteDelay%
    
    rem ::跨天处理  geq大于或等于
    if %hours% geq 24 set /a day=%day%+%delayday% & set /a hours=%hours%-(%delayday%*24)
    
    rem ::时延时后小于100
    if %hours% lss 10 set hours=0%hours%
    
    set t=%day%-%hours%:%minuteDelay%
    echo %t%
    
    pause
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    4 :再在windows配置定时任务执行这个文件即可

    在windows 的cmd命令行窗口执行date命令后这个环境变量的值为
    C:\Users\taoyu>date
    当前日期: 2022/11/17 周四
    输入新日期: (年月日)
    那么如下的各个操作的意义如下:
    %date:~0,4% 表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取4位字符,结果是2022(年的值)
    %date:~5,2% 表示指针从左向右偏移5位,然后从偏移处开始提取2位字符,结果是11(月的值)
    %date:~8,2% 表示指针从左向右偏移8位,然后从偏移处开始提取2位字符,结果是17(日的值)
    再举个例子:
    %date:~5% 表示指针从左向右偏移5位,然后提取所有的值
    %date:~-5% 表示指针反方向偏移,从最右端开始,偏移5位,然后从指针处提取左边的所有数值。
    再来看时间time变量的值:
    C:\Users\taoyu>time
    当前时间: 15:33:47.42
    输入新时间:
    那么如下的各个操作的意义如下:
    %time:~0,2% 表示从左向右指针向右偏0位,然后从指针偏移到的位置开始提取2位字符,结果是小时字段数值
    %time:~3,2% 表示指针从左向右偏移3位,然后从偏移处开始提取2位字符,结果是分钟字段数值
    %time:~6,2% 表示指针从左向右偏移6位,然后从偏移处开始提取2位字符,结果是秒字段数值

    5 :dos命令

    ::请以管理员身份运行
    比较大小
    EQU 等于
    NEQ 不等于
    LSS 小于
    LEQ 小于或等于
    GTR 大于
    GEQ 大于或等于
    
    if语句
    如果日期大于31,日期设定为1,月份加1if %day% GTR 31 (
    set /a day=1 
    set /a month=month+1)
    
    while循环
    使用goto语句实现
    :while
    //循环内容
    pause
    goto :while
    
    输出到屏幕
    
    echo %date%表单数据已复制到剪切板
    
    输出到文本
    
    echo %f% >res.txt
    
    读取文本到剪切板
    
    clip < res.txt
    
    删除文件
    
    del res.txt
    
    暂停
    
    pause
    
    关闭回显
    
    @echo off
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
  • 相关阅读:
    MySQL学习——触发器的语法和示例
    多假设跟踪算法
    [202101][深入浅出 Spring Security][王松][著]
    Java---File详解
    Java 数据库改了一个字段, 前端传值后端接收为null问题解决
    算法之路-------KMP算法
    (Linux)Ubuntu的软件升级 —— update、upgrade、dist-upgrade、full-upgrade
    Nodejs+vue汽车保养美容管理系统vscode前后端分离项目
    Java自制微信聊天图片自动保存软件
    svn log 高级命令解释
  • 原文地址:https://blog.csdn.net/qq_19891197/article/details/127904934