date&time-batch

2020年12月16日 作者 C0isini

date

dos 终端中获取当前日期并进入新日期设置界面(需要注意是否在域内,如果在域内有可能不能设置新的日期)

示例:

D:\>date
当前日期: 2020/12/14 周一
输入新日期: (年月日)

语法:

D:\>date /?
显示或设置日期。

DATE [/T | date]

显示当前日期设置和输入新日期的提示,请键入
不带参数的 DATE。要保留现有日期,请按 Enter。

如果命令扩展被启用,DATE 命令会支持 /T 开关;
该开关指示命令只输出当前日期,但不提示输入新日期。

解释:

直接执行 date ,就会出现当前日期和设置新日期的界面,如果不需要设置新的日期,直接回车(enter)就行

date /T 就只会显示当前日期,而不会显示设置行日期的界面

D:\>date /T
2020/12/14 周一

D:\>

批处理:

在批处理中通常使用 %date% 来显示日期

echo %date% 默认输出:2020/12/16 周三

可进行切割,切割语法如下:

%varname:~start,length%

start 从 0 开始

示例:

echo %date:~0,4%
D:\>echo %date:~0,4%
2020

D:\>

常用语句:

获取年份:%date:~0,4%

获取月份:%date:~5,2%

获取当前日:%date:~8,2%

获取星期:%date:~11,2%

time

dos 终端内获取当前日期并输出设置新日期界面

D:\>time
当前时间: 19:28:54.08
输入新时间: 1
客户端没有所需的特权。

D:\>

这里输出 “客户端没有所需的特权”,是因为在域环境中,有设置。

语法:

D:\>time /?h
显示或设置系统时间。

TIME [/T | time]

显示当前时间设置和输入新时间的提示,请键入
不带参数的 TIME。要保留现有时间,请按 Enter。

如果命令扩展被启用,TIME 命令会支持 /T 命令行开关;该命令行开关告诉
命令只输出当前时间,但不提示输入新时间。

和 date 相同,在批处理中都是 %time% 进行获取时间

D:\>echo %time%
19:28:12.42

同样支持截取操作

获取小时:%Time:~0,2%

获取分钟:%Time:~3,2%

获取秒:%Time:~6,2%

需要注意的是,如果小时大于 9,就是正常的小时,如果小时 小于 10 ,就是空格+小时,不会自动补零。

如果进行传参数的时候就有问题,需要去除空格可以用下面的命令进行去除空格

set "varname=%varname: =%"

例如:

set "date=%date: =%"

总结:

获取当前日期时间:

set date=%Date:~0,4%%Date:~5,2%%Date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%
set "date=%date: =%"

备注:

给的所有示例都是基于 Windows10 中文版的