首页  编辑  

批处理中的时间和日期的利用 %time% %date%

Tags: /计算机文档/脚本,批处理/   Date Created:

批处理中使用时间和日期

http://blog.joycode.com/mvm/archive/2005/05/10/50624.aspx

如果要获取当前时间或日期,可以使用%date%和%time%来得到。

如果要对日期和时间做格式化,可以利用:~来做,例如:

echo %date:~0,4%%date:~5,2%%date:~8,2%

返回20070211。

:~表示提取第几个开始的多少个字符,第一位从0计。其中0、4位置的数字还可以是负值,应该是代表了从字符串末尾、向前取字符。

有人还说,利用下面的命令也可以取出当前时间,试了一下,是可以echo出来,但如何加以利用就不知道了。

for /f "tokens=1,2,3 delims=- " %a in ('date /t') do @echo "%a-%b-%c"

上面这个命令中,date /t必须用单引号包含,双引号不行。

不知道这样取substring的方法对其它变量是否适用。

实际上,我们可以利用:~来提取任意环境变量中的任意的字符!

批处理时间如果由前导0需要处理,可以这样:

set abc=%time: =0%
echo 时: %abc:~0,2% 分: %abc:~3,2%

利用 date /t 有个问题就是在不同的系统上,可能输出的日期格式不一致,导致获取的 年月日是不能适用个日期格式的,在其他的电脑上可能不能正确获取日期文件名。


在 Windows 的批处理脚本中,可以使用以下命令获取当前日期并将其格式化为yyyyMMdd:

for /f "tokens=2 delims==" %%G in ('wmic os get LocalDateTime /value'do set "dt=%%G"
set "date=%dt:~0,8%"

此命令使用了 WMIC 命令来获取本地日期和时间,然后使用 FOR 命令和字符串剪切来提取日期的前八个字符,并将其存储在变量 %date% 中。
这种方法可以在不同的 Windows 系统上运行,并且不受日期格式设置的影响。您可以根据需要将日期格式修改为其他格式。

可以采用以下方法来兼容各种系统的日期区域格式设置:

1. 不依赖于系统日期格式,而是使用 PowerShell 的 Get-Date 命令来获取日期,并指定输出格式为指定的 yyyyMMdd 格式,然后将结果赋值给一个变量,再将该变量用于文件名。

@echo off
setlocal
for /f %%a in ('powershell Get-Date -UFormat %%Y%%m%%d') do set date=%%a
echo %date%.txt
2. 使用 WMIC 命令来获取日期,并将其转换为 yyyyMMdd 格式。由于 WMIC 命令输出的日期格式与系统日期格式无关,因此这种方法具有更好的兼容性。
@echo off
setlocal
for /f "skip=1 tokens=1-6 delims= " %%a in ('wmic path Win32_LocalTime get day^,month^,year /format:table') do (
  set /a year=%%c
  set /a month=100+%%b
  set /a day=100+%%a
)
set date=%year:~-4%%month:~-2%%day:~-2%
echo %date%.txt

无论使用哪种方法,都需要注意以下几点: