batch-file - 在 Batch 中使用变量在循环中执行算术运算

标签 batch-file variables for-loop echo arithmetic-expressions

我想打印以下内容:

0
1
2
3
4

我试过这个:

ECHO OFF
FOR /L %%A in (1,1,5) DO (
    SET /a "B=%%A-1"
    ECHO %B%
)

但是,这给了我:

4
4
4
4
4

如何在我的代码中同时使用 AB 时获得所需的输出?

最佳答案

ECHO OFF
setlocal
FOR /L %%A in (1,1,5) DO (
    SET /a "B=%%A-1"
    call ECHO %%B%%
)

因为您没有使用setlocalB 将被设置为上次运行的值。 %B% 将替换为 4,因为 B 在上一次运行中被设置为 4call echo 技巧使用解析怪癖来检索变量的当前(运行时)值。

这是“官方”方式:

ECHO OFF
setlocal enabledelayedexpansion
FOR /L %%A in (1,1,5) DO (
    SET /a "B=%%A-1"
    ECHO !B!
)

delayedexpansion 模式下,!var! 检索 var 的值,因为它在运行时发生变化。这并非没有缺点,但您需要阅读 delayedexpansion 以获取有关该问题的指南。

关于batch-file - 在 Batch 中使用变量在循环中执行算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41107608/

相关文章:

batch-file - 计算纯文本文件中与子字符串匹配的行数

python - 查找字符串中字符的所有位置

javascript - 如何从父数组中过滤出子数组?

batch-file - "Counter"批量

windows - Stream 3 句柄重定向导致输出溢出

c# - 是否可以在批处理文件中发出等待命令?

c# - 如何使用 C# 从 Visual Studio 传递管道变量

variables - Makefile 字符串变量

java - 变量不会增加,从静态方法调用非静态方法

c++ - C++矩阵* vector 乘法中的错误