windows的bat脚本常用命令 (bat计时等待命令详解)

概述

最近都在写ftp windows环境的一些bat脚本,为了方便显示,想要记录一下每次操作的时间,所以在这里总结一下windows环境bat脚本获取时间的常用命令。

windows环境获取时间相关概念

1、windows下DOS窗口date格式

针对date的结果将其进行格式化显示,如:YYYY-MM-DD 就要进行如下操作:

日期截取遵从格式 %date:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)

年份从第0位开始截取4位,月份从第5位开始截取2位,日期从第8位开始截取2位

2、windows下DOS窗口time格式

针对time的结果将其进行格式化显示,如:HH:MM:SS就要进行如下操作:

时间截取遵从格式 %time:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)

时钟从第0位开始截取2位,分钟从第3位开始截取2位,秒钟从第6位开始截取2位

2、脚本DateTime.bat

:: 编码格式 ANSI
:: 脚本创建时最好选择ANSI编码(防止中文乱码)
:: @echo off 表示不回显执行的命令
@echo off 
@echo =========Windows的原本日期时间格式=======================
:: 设置变量,使用变量时需要用一对%包起来
set ORIGINAL_DATE=%date% 
echo %ORIGINAL_DATE%
 
@echo =========日期按照YYYY-MM-DD格式显示======================
:: 日期截取遵从格式 %date:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)
:: 年份从第0位开始截取4位,月份从第5位开始截取2位,日期从第8位开始截取2位
 
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
set CURRENT_DATE=%YEAR%-%MONTH%-%DAY%
echo %CURRENT_DATE%
 
@echo =========时间按照HH:MM:SS格式显示========================
:: 时间截取遵从格式 %time:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)
:: 时钟从第0位开始截取2位,分钟从第3位开始截取2位,秒钟从第6位开始截取2位
 
set HOUR=%time:~0,2%
set MINUTE=%time:~3,2%
set SECOND=%time:~6,2%
 
:: 当时钟小于等于9时,前面有个空格,这时我们少截取一位,从第1位开始截取
set TMP_HOUR=%time:~1,1%
set NINE=9
set ZERO=0
:: 处理时钟是个位数的时候前面补上一个0, LEQ表示小于等于
if %HOUR% LEQ %NINE% set HOUR=%ZERO%%TMP_HOUR%
 
set CURRENT_TIME=%HOUR%:%MINUTE%:%SECOND%
echo %CURRENT_TIME%
 
@echo =========日期时间按照YYYY-MM-DD HH:MM:SS格式显示=========
set CURRENT_DATE_TIME=%YEAR%-%MONTH%-%DAY% %HOUR%:%MINUTE%:%SECOND%
echo %CURRENT_DATE_TIME%
 
@echo =========日期时间按照YYYYMMDD_HHMMSS格式显示=============
set CURRENT_DATE_TIME_STAMP=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%
echo %CURRENT_DATE_TIME_STAMP%
@echo =========================================================
pause

windows的bat脚本循环执行,bat脚本获取系统日期

windows的bat脚本循环执行,bat脚本获取系统日期

运行结果:

windows的bat脚本循环执行,bat脚本获取系统日期

3、按照时间创建文件夹脚本

提供一个按照时间戳创建文件夹的脚本,这个在文件备份的时候常常用到

:: 编码格式 ANSI
:: 脚本创建时最好选择ANSI编码(防止中文乱码)
:: @echo off 表示不回显执行的命令
@echo off 
 
:: 日期截取遵从格式 %date:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)
:: 年份从第0位开始截取4位,月份从第5位开始截取2位,日期从第8位开始截取2位
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
 
:: 时间截取遵从格式 %time:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)
:: 时钟从第0位开始截取2位,分钟从第3位开始截取2位,秒钟从第6位开始截取2位
set HOUR=%time:~0,2%
set MINUTE=%time:~3,2%
set SECOND=%time:~6,2%
:: 毫秒
set MILLISECIOND=%time:~9,2%
 
:: 当时钟小于等于9时,前面有个空格,这时我们少截取一位,从第1位开始截取
set TMP_HOUR=%time:~1,1%
set NINE=9
set ZERO=0
:: 处理时钟是个位数的时候前面补上一个0, LEQ表示小于等于
if %HOUR% LEQ %NINE% set HOUR=%ZERO%%TMP_HOUR%
 
set CURRENT_DATE_TIME_STAMP=%YEAR%%MONTH%%DAY%%HOUR%%MINUTE%%SECOND%%MILLISECIOND%
mkdir %CURRENT_DATE_TIME_STAMP%

windows的bat脚本循环执行,bat脚本获取系统日期

运行结果:

windows的bat脚本循环执行,bat脚本获取系统日期

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

windows的bat脚本循环执行,bat脚本获取系统日期