crazybird

批处理bat获取当前时间并以当前时间创建txt文件

1
阅读(34996)

以下内容均在自己的笔记本电脑上实现。

首先,在cmd中查看系统日期date的格式,如下图所示,即yyyy\mm\dd week。

11.png

然后,在cmd中查看系统时间time的格式,如下图所示,即hh:mm:ss.MsMs。需要注意的是hh,其十位数可能是空格,我们希望在创建txt文件时将该空格用0代替。

12.png

13.png

以yyyymmddhhmmss.txt(年月日时分秒)的格式创建txt文本,批处理test.bat实现如下:

@echo off
set "year=%date:~0,4%"
set "month=%date:~5,2%"
set "day=%date:~8,2%"
set "hour_ten=%time:~0,1%"
set "hour_one=%time:~1,1%"
set "minute=%time:~3,2%"
set "second=%time:~6,2%"

if "%hour_ten%" == " " (
    type nul > %year%%month%%day%0%hour_one%%minute%%second%.txt
) else (
    type nul > %year%%month%%day%%hour_ten%%hour_one%%minute%%second%.txt
)

pause

运行test.bat(在不同的时间运行了两次),产生txt文件如下所示,可见设计是正确的。

14.png

如果不对hh的十位数进行判断,直接用下面的批处理bat实现,将发生错误。

@echo off
set "year=%date:~0,4%"
set "month=%date:~5,2%"
set "day=%date:~8,2%"
set "hour_ten=%time:~0,1%"
set "hour_one=%time:~1,1%"
set "minute=%time:~3,2%"
set "second=%time:~6,2%"

type nul > %year%%month%%day%%hour_ten%%hour_one%%minute%%second%.txt

pause

如果hh的十位数不为空,则生产的txt文本没问题的;如果hh的十位数为空,则生产的txt文本有问题,cmd控制台提示错误信息,同时生产的txt文件名错误,如下所示,即批处理在处理空格时丢失了hhmmss.txt。

15.png

16.png