Batch file CMD:Can';t使用+;=操作人员
我正在使用CMD命令处理一些变量。我可以给一个变量加1,但是如果这个变量是08或09,结果是1,而不是9或10。代码如下:Batch file CMD:Can';t使用+;=操作人员,batch-file,cmd,Batch File,Cmd,我正在使用CMD命令处理一些变量。我可以给一个变量加1,但是如果这个变量是08或09,结果是1,而不是9或10。代码如下: setlocal EnableDelayedExpansion set day=08 echo Day:%day% set /a day+=1 echo Day:% day% 这适用于数字1-7和10之后。我需要将前导零添加到小于10的数字,因为否则,尽管在代码的其他部分显示了正确的值,但变量不会写入文本文件(稍后执行) Numeric values are decima
setlocal EnableDelayedExpansion
set day=08
echo Day:%day%
set /a day+=1
echo Day:% day%
这适用于数字1-7和10之后。我需要将前导零添加到小于10的数字,因为否则,尽管在代码的其他部分显示了正确的值,但变量不会写入文本文件(稍后执行)
Numeric values are decimal numbers, unless
prefixed by 0x for hexadecimal numbers, and 0 for octal numbers.
So 0x12 is the same as 18 is the same as 022. Please note that the octal
notation can be confusing: 08 and 09 are not valid numbers because 8 and
9 are not valid octal digits.
从设置/?
从
set/?
可以通过在命令提示窗口中运行set/?
来读取命令帮助set。它解释了带前导0的数字被解释为八进制数字,请参见Windows命令解释器内部使用的带基的函数为0
(自动检测)
08
和09
在八进制数字系统中无效,因此使用值0
进行解释
这种情况下的一种解决方案是,首先在预处理状态期间使用字符串串联,将字符串08
更改为108
,并将108
减去99
,转换为整数,得到08
和09
以及01
到31
1
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "day=08"
echo Day: %day%
set /A day=1%day% - 99
echo Day: %day%
endlocal
上述批处理文件的输出为:
Day: 08
Day: 9
Day: 08
Day: 09
这里不需要延迟的环境变量展开,通常在算术表达式中根本不需要,这也可以通过命令SET来解释。当然,在命令块中定义或修改环境变量之前,在命令块中执行算术表达式之前,必须先执行字符串连接等异常。但是这些用例真的很少见
对于少于两位数的数字,当结果应再次以前导的0
表示时,最好不要减去99
,而是加上1
,并在下一步中,在算术表达式求值后,将字符串中始终为3位数的最后两位数分配给环境变量
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "day=08"
echo Day: %day%
set /A day=1%day% + 1
set "day=%day:~-2%"
echo Day: %day%
endlocal
上述批处理文件的输出为:
Day: 08
Day: 9
Day: 08
Day: 09
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
echo/?
endlocal/?
设置/?
setlocal/?
SET/?
可以读取命令的帮助SET。它解释了带前导0的数字被解释为八进制数字,请参见Windows命令解释器内部使用的带基的函数为0
(自动检测)
08
和09
在八进制数字系统中无效,因此使用值0
进行解释
这种情况下的一种解决方案是,首先在预处理状态期间使用字符串串联,将字符串08
更改为108
,并将108
减去99
,转换为整数,得到08
和09
以及01
到31
1
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "day=08"
echo Day: %day%
set /A day=1%day% - 99
echo Day: %day%
endlocal
上述批处理文件的输出为:
Day: 08
Day: 9
Day: 08
Day: 09
这里不需要延迟的环境变量展开,通常在算术表达式中根本不需要,这也可以通过命令SET来解释。当然,在命令块中定义或修改环境变量之前,在命令块中执行算术表达式之前,必须先执行字符串连接等异常。但是这些用例真的很少见
对于少于两位数的数字,当结果应再次以前导的0
表示时,最好不要减去99
,而是加上1
,并在下一步中,在算术表达式求值后,将字符串中始终为3位数的最后两位数分配给环境变量
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "day=08"
echo Day: %day%
set /A day=1%day% + 1
set "day=%day:~-2%"
echo Day: %day%
endlocal
上述批处理文件的输出为:
Day: 08
Day: 9
Day: 08
Day: 09
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
echo/?
endlocal/?
设置/?
setlocal/?