Batch file 批处理文件中的变量乘法

Batch file 批处理文件中的变量乘法,batch-file,Batch File,我试图通过批处理文件将两个变量相乘。代码是: SETLOCAL ENABLEDELAYEDEXPANSION @ECHO OFF SET /A res = 0 FOR /L %%i IN (1,1,2) DO ( FOR /L %%j IN (1,1,3) DO ( SET /A res = %%i * %%j ECHO Multiplying %%i and %%j ECHO %res% ) ) 问题是我总是得

我试图通过批处理文件将两个变量相乘。代码是:

SETLOCAL ENABLEDELAYEDEXPANSION
@ECHO OFF
SET /A res = 0
FOR /L %%i IN (1,1,2) DO (
    FOR /L %%j IN (1,1,3) DO (
        SET /A res = %%i * %%j 
        ECHO Multiplying %%i and %%j
        ECHO %res%
        )
    )
问题是我总是得到0作为结果。谁能告诉我我做错了什么

以下是输出:

Multiplying 1 and 1
0
Multiplying 1 and 2
0
Multiplying 1 and 3
0
Multiplying 2 and 1
0
Multiplying 2 and 2
0
Multiplying 2 and 3
0

谢谢大家!

这是因为您在设置结果的同一块中输出结果。读取延迟扩展的帮助设置<当解析命令时,code>cmd展开
%variables%
,这比执行命令时要早得多。作为副作用,您的
%res%
将被零替换

你需要

setlocal enabledelayedexpansion
开始时,然后使用
!瑞斯而不是
%res%


旁注:在
集合
调用中,去掉
=
周围的空格。当它们与
/A
一起使用时,它们的工作方式与您预期的一样,但在其他情况下则不会。

您需要使用!要因延迟扩展设置而扩展变量,请执行以下操作:

SETLOCAL ENABLEDELAYEDEXPANSION
@ECHO OFF
SET res = 0
FOR /L %%i IN (1,1,2) DO (
    FOR /L %%j IN (1,1,3) DO (
        SET /A res = %%i * %%j 
        ECHO Multiplying %%i and %%j
        ECHO !res!
    )
)

该死我已经启用了延迟扩展,但不知道!物件!事情非常感谢。阅读文档有时会有所帮助;-)也很抱歉没有进一步解释,但我想我已经解释了大约200次了。