【发布时间】:2012-08-03 19:24:01
【问题描述】:
我在美国英语语言环境中使用 Windows 2008 R2。我的批处理文件在 8 月 1 日之后停止工作。从 3 月到 7 月运行良好。
脚本将带有前导零的数字月份转换为字符串。这是重现的脚本。实际的批处理脚本从 %date% 中提取数字月份。
set month=07
REM convert numerical month to string
for /f "tokens=%month%" %%A in (
"jan feb mar apr may jun jul aug sep oct nov dec") do (
set month_str=%%A
)
echo %month_str%
上面运行良好。它显示“七月”
但如果我将月份更改为 08,则会失败并显示错误消息
8" was unexpected at this time
所以我删除了前导零。
set /A month=100%month% %% 100
现在它又可以正常工作了,这是我的问题
- Windows 2008 R2 FOR 命令的官方文档在哪里?
编辑:http://technet.microsoft.com/en-us/library/cc754900.aspx
- 将零填充数字传递给令牌选项可能是我的错,但为什么可以接受 07 而不是 08?
- 如果 07 是有效参数,它是否与 7 相同或解释为其他内容?
【问题讨论】:
-
那是我第一次猜测有 Unix 背景。因此问题(1)。
-
嗯,宾果游戏!设置月份=010 八月返回!所以 FOR 命令理解八进制。这是一种惊喜。
-
Windows 充满了惊喜。
-
数值解析记录在 SET 命令下。