请参阅下面的批处理代码,它显示日期和时间,但缺少这一天。如何解决这个问题?
代码:
@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
答案 0 :(得分:1)
在解析诸如date /t
之类的系统命令的输出时,系统区域设置非常重要。
脚本的第一行发出命令date /t
并解析其输出。它将字符串拆分为指定的分隔符,这些分隔符是空格(因此是结尾
"
之前的空格)和斜杠/
。然后找到第2到第4个项目,并将它们分配给变量%a
,%b
和%c
。
如果您在控制台上键入date /t
,您将看到输出并理解脚本无效的原因......
我认为在您的系统上,由于您的系统区域设置,date /t
命令的输出会有所不同。您必须修改脚本才能符合这些设置。
(另外,请记住,这种脚本不可移植:使用其他语言环境的其他用户会遇到同样的问题)