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次了。