在批处理脚本中处理八进制变量

时间:2016-03-18 06:32:51

标签: batch-file

您好我正在运行批处理脚本以获取当前日期并对其执行数值运算。

我使用以下命令获取日期,然后对其执行操作(添加,减去等)。

但如果日期返回的值小于10(例如09,08),则操作会出错。

set dd=%date:~7,2%   
set /a dd1=08-1 
Invalid number.  Numeric constants are either decimal (17),hexadecimal (0x11), or octal (021).

请帮忙

1 个答案:

答案 0 :(得分:4)

你可以通过一个小技巧删除零:

set /a dd1=(1%dd: =0%-100)-1

这将字符串“1”添加到“08”(它仍然是一个字符串),结果为“108”。然后减去“100”(/a将它们视为数字),结果为“8”。如果在您的语言环境中日期没有前导零而是空格,%%d: =0%将其替换为零

如果您需要前导零的结果,只需再次添加:

set dd1=0%dd1%
set dd1=%dd1:~-2%

这在字符串“7”(之前的结果)前面添加字符串“0”,得到“07”并从它的“07”取最后两位数字(如果是,之前的结果是“ 24“, - >添加”0“=”024“ - >最后两个=”24“)

已修改也适用于区域设置,其中日期有空格而不是前导零。 (感谢LưuVĩnhPhúc发现它)