批处理文件循环中的算术

Posted

技术标签:

【中文标题】批处理文件循环中的算术【英文标题】:Arithmetic in batch file loop 【发布时间】:2016-01-14 14:57:07 【问题描述】:

我正在批处理文件中编写一个 for 循环,即每次迭代对变量进行算术运算。循环如下所示:

@echo off
setlocal enabledelayedexpansion
SET d=10
echo !d!

for /L %%t IN (0,1,9) DO (
    SET /A d = %d% + 10
    echo !d!
)

仅算术适用于第一次迭代。 'd' 是从 10 开始,每次加 10(10 20 30 ...),但它总是在 20 处停止。在命令提示符的输出中会显示:

10
20
20
...
20
20

我怎样才能写出这样它会在整个循环中增加 10?

【问题讨论】:

【参考方案1】:

你已经接近了,但你错过了在一个地方使用延迟扩展。

SET /A d = %d% + 10 更改为SET /A d = !d! + 10

@echo off
setlocal enabledelayedexpansion
SET d=10
echo !d!

for /L %%t IN (0,1,9) DO (
    SET /A d = !d! + 10
    echo !d!
)

【讨论】:

set /A "d+=10"set /A d = d +10【参考方案2】:

如果您需要循环中的算术学术练习,请按照@JosefZ 的说明进行操作。如果你想用更少的代码得到同样的结果,你可以这样做。

for /L %%t IN (20,10,110) DO echo %%t

【讨论】:

谢谢!我可以做一个循环,但正如你所说,我需要以这种方式完成学术练习。此外,变量 'd' 用于嵌套循环 else where 并且必须从它停止的地方继续

以上是关于批处理文件循环中的算术的主要内容,如果未能解决你的问题,请参考以下文章

退出批处理文件中的 FOR 循环?

如何打破批处理文件中的 FOR 循环?

SET 在批处理文件中的循环内不起作用[重复]

无法循环文件,文件名,windows批处理文件和图像magick中的空格

循环遍历子目录批处理文件中的文件

为啥即使使用 setlocal enabledelayedexpansion 也无法访问 for 循环(批处理文件)中的局部变量? [复制]