我想在Windows批处理环境中以YYYYMMDD的格式获取今天的日期,但不知道从哪里开始或做什么。
感谢任何代码或方向。
答案 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文件:
答案 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%