【问题标题】:Get Date in YYYYMMDD format in windows batch file [duplicate]在Windows批处理文件中获取YYYYMMDD格式的日期[重复]
【发布时间】:2013-02-11 10:43:37
【问题描述】:

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

我正在使用:

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

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

请指教。

【问题讨论】:

  • 您可以参考 [this][1] 链接了解更多信息。 [1]:stackoverflow.com/questions/14427490/…
  • 回显 %date:~4,2%-%date:~7,2%-%date:~10,4%
  • @AliBayat 不能按照 OP 的要求“跨系统一致”工作

标签: windows batch-file


【解决方案1】:

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

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

它应该看起来更像这样......

set mydate=%date:~10,4%%date:~6,2%/%date:~4,2%
echo %mydate%

如果日期是Tue 12/02/2013,那么它将显示为2013/02/12

要删除斜线,代码看起来更像

set mydate=%date:~10,4%%date:~7,2%%date:~4,2%
echo %mydate%

会输出20130212

还有一个提示,如果mydate 等于%date:~10,4%%date:~7,2% 或类似的东西,你可能忘记了代字号(~)。

【讨论】:

  • 偏移不一定是错误的:这完全取决于您当前的日期/时间区域设置。在我的电脑上,%date% 给出了 Sun 04/26/2014。没有安全的方法,我能想到这样就安全了
  • 感叹号!在 DOS 下好像不行??
  • 在 DOS 中感叹号失败的地方,用百分号 % 代替。这对我有用。
  • 这是一个很好的方法。要获取yyyyMMdd(例如,20161224),请使用set CURRENT_DATE=%date:~10,4%%date:~4,2%%date:~7,2%
  • @vallismortis 这是一种非常有缺陷的方法。 OP 明确表示“我需要它在整个系统中保持一致,即使在更改时间设置时也是如此。”
【解决方案2】:

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

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

【讨论】:

  • 不是,当分隔符为“/”时。对于区域独立的方法,请参阅:stackoverflow.com/questions/203090/…
  • 错误:“%%我此时出乎意料。”
  • %% vs % 一个用于批处理文件,另一个用于命令行
  • 更确切地说:for /F "usebackq tokens=1,2,3,4 delims=/" %%A IN (echo %date%) do echo "MON=%%B" "DAY= %%C" "YEAR=%%D"
  • @ShaiAlon 双百分比“%%”用于在批处理文件中运行。如果只是尝试从 DOS - oops - CMD 提示符,请使用单个百分比“%”
猜你喜欢
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 2018-07-05
  • 2020-11-25
  • 2013-08-03
相关资源
最近更新 更多