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"
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
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%
::小时小于10补0
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 ::分钟延时后小于10补0
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 ::时延时后小于10补0
if %hours% lss 10 set hours=0%hours%
set t=%day%-%hours%:%minuteDelay%
echo %t%
pause
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,月份加1。
if %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