从date丢失的日子

请参阅下面的批处理代码,它显示date和时间,但缺less一天。 如何解决这个问题?

码:

@echo off For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set dt=%%c-%%a-%%b) For /f "tokens=1-4 delims=:." %%a in ('echo %time%') do (set tm=%%a.%%b) set bkupfilename=%1 %dt% %tm%.bak echo Backing up to file: %bkupfilename% 

输出:

 C:\wamp>backup.bat Backing up to file: -08-2011 15.49.bak 

当解析系统命令如date /t输出时,系统区域是非常重要的。

该脚本的第一行发出命令date /t并解析其输出。 它将指定的分隔符(即空格)分割字符串 (因此结束之前的空间" )和斜杠/ 。然后,找到第2到第4项,并将它们分配给变量%a%b%c

如果您在控制台上键入date /t ,您将看到输出并理解脚本不能正常工作的原因。

  • 该命令写入的系统使用美国日期格式(月 – 日 – 年),
  • 在我的系统上,使用欧洲日期格式(日 – 月 – 年),脚本工作,但颠倒了月份和日期。

我想在你的系统上,由于你的系统区域设置, date /t命令的输出是不同的。 您将不得不修改您的脚本以符合这些设置。

(另外请记住,这种脚本不是可移植的:使用其他语言环境的另一个用户将遇到同样的问题)