在Windows批处理文件中以YYYYMMDD格式获取日期

use*_*002 70 windows batch-file

我需要在批处理文件中以YYYYMMDD格式获取日期.

我这样做使用:

set mydate=%date:~6,4%%date:~3,2%%date:~0,2%
echo %mydate%
Run Code Online (Sandbox Code Playgroud)

我需要它在整个系统中保持一致,即使在更改时间设置方面也是如此.

请指教.

BDM*_*BDM 33

如果在阅读其他问题并查看评论部分中提到的链接后,您仍然无法弄明白,请继续阅读.

首先,你出错的地方是偏移量.

看起来应该更像......

set mydate=%date:~10,4%%date:~6,2%/%date:~4,2%
echo %mydate%
Run Code Online (Sandbox Code Playgroud)

如果日期是Tue 12/02/2013那么它会显示为2013/02/12.要删除斜杠,代码看起来会更像set mydate=%date:~10,4%%date:~7,2%%date:~4,2%输出20130212,这看起来不像日期.

并且暗示将来这样做,如果mydate等于类似的东西%date:~10,4%%date:~7,2%,你可能忘记了波浪号(〜).

  • 这是一个很好的方法.要获得`yyyyMMdd`(例如,20161224),请使用`set CURRENT_DATE =%date:~10,4 %% date:~4,2 %% date:~7,2%`. (9认同)
  • 偏差不一定是错误的:这一切都取决于您当前的日期/时间区域设置.在我的电脑上,%date%给出了2014年4月26日的新闻.我无法想到安全的方式,这样安全 (7认同)
  • 感叹号!在DOS中似乎没有用? (7认同)
  • 如果感叹号在DOS中失败,请将其替换为百分号%.这对我来说很有用. (3认同)
  • @vallismortis 这是一种非常有缺陷的方法。OP 明确表示“我需要它在整个系统中保持一致,即使在更改时间设置时也是如此。” (3认同)
  • 这需要'setlocal enabledelayedexpansion' (2认同)

小智 1

你可以试试这个!这应该适用于 Windows 机器。

for /F "usebackq tokens=1,2,3 delims=-" %%I IN (`echo %date%`) do echo "%%I" "%%J" "%%K"
Run Code Online (Sandbox Code Playgroud)

  • 当分隔符为“/”时则不然。对于独立于区域的方法,请参阅:http://stackoverflow.com/questions/203090/how-to-get-current-datetime-on-windows-command-line-in-a-suitable-format-for-us (5认同)
  • 错误:“%%此时我出乎意料。” (2认同)