【问题标题】:How to set a variable with a modulo result in windows batch?如何在 Windows 批处理中设置具有模结果的变量?
【发布时间】:2026-01-21 02:30:02
【问题描述】:

我正在尝试使用 的结果设置一个变量,但似乎我的语法不被 Windows 7 批处理所接受。

演示代码:

@echo off
for /L %%i in (1,1,8) do (
    echo.i %%i
    set /a "mod=%%i %% 3"
    echo.mod %mod%
)

输出错误,即模数不会随着for循环的每次迭代而改变:

    d:\>tmp
    i 1
    mod 2
    i 2
    mod 2
    i 3
    mod 2
    i 4
    mod 2
    i 5
    mod 2
    i 6
    mod 2
    i 7
    mod 2
    i 8
    mod 2
    d:\>

【问题讨论】:

  • 你需要使用delayedexpansion。

标签: windows batch-file windows-7 module set


【解决方案1】:

像这样:

@echo off
setlocal enabledelayedexpansion
for /L %%i in (1,1,8) do (
    echo.i %%i
    set /a "mod=%%i %% 3"
    echo.mod !mod!
)

详情请见Setlocal /?

【讨论】:

  • 确实,马特,这些变化起到了作用。感谢您的快速回复和 Setlocal 指针。