日期缺少一天

时间:2011-08-25 14:56:42

标签: windows windows-7 batch-file dos

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

代码:

@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

1 个答案:

答案 0 :(得分:1)

在解析诸如date /t之类的系统命令的输出时,系统区域设置非常重要。

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

如果您在控制台上键入date /t,您将看到输出并理解脚本无效的原因......

  • 编写此命令的系统使用美国日期格式(月 - 日 - 年),
  • 在我的系统上,使用欧洲日期格式(日 - 月 - 年),脚本可以工作,但是反转月和日。

我认为在您的系统上,由于您的系统区域设置,date /t命令的输出会有所不同。您必须修改脚本才能符合这些设置。

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