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/
文章评论