【问题标题】:Variable is not updated on first iteration of loop. CMD Batch [duplicate]变量不会在循环的第一次迭代中更新。 CMD批处理[重复]
【发布时间】:2020-03-27 13:10:59
【问题描述】:

我在尝试使用条件循环输出在 CMD 中创建的乘法表的结果时遇到问题。代码如下:

@ECHO OFF & CLS

SET AUX=0

IF "%1" == "" (
    SET /P num=Introduzca el numero a mostrar su tabla de multiplicar: 
) ELSE (
    SET num=%1
)

:sumarCont
SET /A AUX+=1

IF /I %AUX% LEQ 10 (

    SET /A mul=%num%*%AUX%
    ECHO %AUX% * %num% = %mul%
    GOTO :sumarCont
)

@PAUSE > nul

问题是在第一个循环交互中,名为 AUX 的变量不会更新,最终会出现如下输出:

Introduzca el numero a mostrar su tabla de multiplicar: 5
1 * 5 =   
2 * 5 = 5 
3 * 5 = 10
4 * 5 = 15
5 * 5 = 20
6 * 5 = 25
7 * 5 = 30
8 * 5 = 35
9 * 5 = 40 
10 * 5 = 45

我曾尝试使用延迟扩展,但结果保持不变。 我错过了什么?

提前致谢。

【问题讨论】:

  • 使用已定义变量执行算术运算的正确方法是Set /A mul=num*AUX 而不是SET /A mul=%num%*%AUX%

标签: windows loops batch-file variables cmd


【解决方案1】:

当我在玩代码时,我让它正常工作。 我唯一改变的就是这行代码。

:sumarCont
SET /A AUX+=1
SET /A mul=num*AUX

IF /I %AUX% LEQ 10 (
    ECHO %AUX% * %num% = %mul%
    GOTO :sumarCont
)

我从 IF 中取出了 AUX 变量,现在它可以正常工作了。 对不起我的英语不好。

【讨论】:

  • 和更好的setlocal enabledelayedexpansion for /L %%i in (1,1,10) do (set /a aux=num*%%i & echo %num% * %%i = !aux!) endlocal
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
相关资源
最近更新 更多