Windows下bat里获取日期/时间并格式化的方法

2022-01-21 67点热度 0人点赞 0条评论

Windows的命令行终端(Terminal、Bat)下获得时间和日期,是比较简单的,直接使用%date%和%time%就可以了,如下:

echo %date%
rem 注意如果不满10,前面有空格!
echo %time%

C:\Users\Administrator>echo 2022/01/21 周五 
2022/01/21 周五
C:\Users\Administrator>echo 9:12:32.48 
 9:12:32.48

但是注意,这里的日期格式,可能就根据不同的电脑的设置会有不一样,设置如下:

所以bat中格式化时间或者日期的时候,一般是使用截取日期或者时间的字符位置,要注意这里的格式,多做测试!

例子1

获得类似2022-01-21这样的日期

rem 定义当前日期 类似2022-01-21这样的格式,假设%date%是这样的格式:2022/01/21 周五 截取前10个字符,然后把斜线/替换成-
set currentdate=%DATE:~0,10%
set currentdate=%currentdate:/=-%

还可以换个思路,年月日分别提取:

rem 输出20220121这样的
set currentdate2=%date:~0,4%%date:~5,2%%date:~8,2%

rem 输出2022-01-21这样的,分隔符可以根据自己的需求做修改
set currentdate3=%date:~0,4%-%date:~5,2%-%date:~8,2%

echo %currentdate2%
echo %currentdate3%

例子2

得到日期+时间的格式,这里还有一个特别的地方,就是时间不满10的时候,windows的处理是加了空格,需要替换成0

rem 得到类似这样的格式化时间 94011 (注意如果不满10小时,前面有个空格,所以还需要把空格替换成0)
set currenttime=%time:~0,2%%time:~3,2%%time:~6,2%
set currenttime=%currenttime: =0%

rem 得到类似这样的格式化日期+时间 20220121_094011
set currentdatetime=%date:~0,4%%date:~5,2%%date:~8,2%_%currenttime%
echo %currenttime%
echo %currentdatetime%

格式化了日期+时间,一般可以用于备份文件的生成规则,关于windows下的定时备份,可以参考(其中也介绍了得到3天前的日期的方法,例如用户删除旧备份用到):

https://blog.terrynow.com/2020/12/30/windows-server-backup-scripts/

admin

这个人很懒,什么都没留下

文章评论

*

code