0

我正在尝试获取今天日期的月份(例如 08):

set /a m=%date:~4,2% echo m

但是,我收到错误“无效的数字。常量是十进制 (17) 十六进制 (0x11) 或八进制 (021)”。为什么?一直到八月都运行良好。

4

2 回答 2

3

尝试这个:

set "month=%date:~4,2%"
echo %month%

cmd 假定所有带前导零的数字为八进制数。“08”不是有效的八进制数。

于 2013-08-05T21:27:54.130 回答
2

Dany Bee 是正确的 - SET /A 将尝试将 08 视为八进制并给出错误消息。您可以通过以 1 为前缀并计算 mod 100 来获得不带前导 0 的值。

set /a "month=1%date:~4,2% %% 100"

请注意,从 中解析值%date%取决于语言环境。在我的机器上我必须使用set /a "month=1%date:~0,2% %% 100"

于 2013-08-05T21:46:25.543 回答