【问题标题】:How can I create a date stamp for yesterday如何为昨天创建日期戳
【发布时间】:2013-02-15 14:42:30
【问题描述】:

我正在尝试获取昨天文件名中带有日期戳的文件内容 (WH.FTBBT20130214.csv)。我为今天创建了一个日期戳变量,但在谷歌中找不到任何告诉我如何使用相同格式回溯我的日期戳的内容。这是我在批处理文件中创建的代码:

@echo off

REM ***** 20130215 MS Define DateStamp variable *****
Set DateStamp=%date:~10,4%%date:~4,2%%date:~7,2%
Set DateStamp=%DateStamp%
REM Set DateStamp=20130212

echo DateStamp: %DateStamp%

任何帮助/指导将不胜感激。谢谢。

【问题讨论】:

标签: batch-file


【解决方案1】:

您不能总是从日期中减去 1 并得到昨天的日期。假设是 3 月 1 日。昨天是什么? 3 月 0 日?那样不行。更好的方法是使用 vbscript 的 Date() 对象并从中减去一天。

@echo off
setlocal
REM ***** 20130215 MS Define DateStamp variable *****
echo d = DateAdd^("d", -1, Date^(^)^)>yesterday.vbs
echo wscript.echo DatePart^("yyyy", d^) ^& "/" ^& DatePart^("m", d^) ^& "/" ^& DatePart^("d", d^)>>yesterday.vbs
for /f "tokens=1-3 delims=/" %%I in ('cscript /nologo yesterday.vbs') do (
    set Year=%%I
    if %%J LEQ 9 (set Month=0%%J) else set Month=%%J
    if %%K LEQ 9 (set Day=0%%K) else set Day=%%K
)
set DateStamp=%Year%%Month%%Day%
del /q yesterday.vbs
echo %DateStamp%

【讨论】:

  • 感谢您的信息。我没有意识到那是 BATCH 的工作方式。我很感激更正。我会尝试vbscript。好久没用了。
【解决方案2】:

我找到了答案。以防万一有人感兴趣:

设置 /A DateStamp=(%date:~10,4%%date:~4,2%%date:~7,2%)-1

回显 DateStamp: %DateStamp%

【讨论】:

  • 那行不通。如果今天的日期是 2014 年 1 月 1 日,您认为会发生什么? 20140101 变成 20140100,但你想要 20131231。
猜你喜欢
  • 2018-12-18
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
相关资源
最近更新 更多