如何在Windows批处理环境中获取今天的日期?

时间:2011-08-11 10:58:29

标签: batch-file

我想在Windows批处理环境中以YYYYMMDD的格式获取今天的日期,但不知道从哪里开始或做什么。

感谢任何代码或方向。

6 个答案:

答案 0 :(得分:16)

在我的系统上,echo %date%返回dd/mm/yyyy

set now=%date:~6,4%%date:~3,2%%date:~0,2%
echo.%now%

使用的语法是%date:~S,L%,其中S是字符偏移量,L是从%date%返回的值中读取的长度。

答案 1 :(得分:2)

您也可以使用FOR命令分隔日期的各个部分:

for /f "tokens=1-3 delims=/" %%a in ("%date%") do set now=%%c%%a%%b

日期组件由/(delims)拆分,并在变量%% a和连续的(%% b和%% c)中取前三个部分(标记)。

虽然这看起来比前一种方法更复杂,但在使用它时不太容易出错。有关详细信息,请键入:FOR /?

答案 2 :(得分:1)

@echo off
for /f "tokens=*" %%a in ('
  "wmic path Win32_LocalTime get year,month,day /value|findstr ="
  ') do @set %%a
echo %year%%month%%day%
pause

答案 3 :(得分:0)

Rob van Der Woude的脚本parses the date没有使用WMIC,这需要管理权限。这是脚本的链接。只需将其重命名为.BAT文件:

http://www.robvanderwoude.com/files/sortdate_dos.txt

答案 4 :(得分:0)

在我的Windows 10计算机上,%date%格式与@Alex K.答案所期望的值不同,因此它对我不起作用。在做了一些更多的研究之后,我挖出了以下脚本,这对于以您选择的格式获取任何日期是有益的。今天使用day=0,明天使用day=1,昨天使用day=-1等等...

set day=0
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "today=%yyyy%%mm%%dd%"

echo %today%

答案 5 :(得分:0)

@ raider33的脚本有效,这是另一种使用PowerShell的方法:

@echo off
for /f %%i in ('PowerShell -Command "Get-Date -uformat '%%Y%%m%%d'"') do (
    set "Today=%%i"
)
echo,%Today%