首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么输出变量的值在循环内不改变- Windows批处理

为什么输出变量的值在循环内不改变- Windows批处理
EN

Stack Overflow用户
提问于 2017-11-15 17:44:22
回答 1查看 51关注 0票数 1

我使用以下代码,如果我调用array.bat外部循环,您可以将输出中的值与调用期间使用的索引不同。

代码语言:javascript
复制
    @echo off

set empresas[0]=EPB
set empresas[1]=ENF
set empresas[2]=ESE
set empresas[3]=ESS
set empresas[4]=EBO
set empresas[5]=EMG
set empresas[6]=EMT
set empresas[7]=ETO

call array.bat len empresas length
call array.bat getitem empresas 0 empresa1
echo %empresa1%
call array.bat getitem empresas 1 empresa1
echo %empresa1%
echo %length%


for /l %%x in (0, 1, %length% ) do (

   call array.bat getitem empresas %x% empresa3

   echo %empresa3%
   echo %%x
)

该代码生成输出:

代码语言:javascript
复制
   EPB
ENF
7
ETO
0
ETO
1
ETO
2
ETO
3
ETO
4
ETO
5
ETO
6
ETO
7

只有最后的值被打印出来了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-15 17:58:18

又是delayedexpansion陷阱。请在上面搜索delayed expansion

试一试

代码语言:javascript
复制
call array.bat getitem empresas %%x empresa3

CALL echo %%empresa3%%

请注意,%%x是元级%%x的值。%x%是环境变量x的内容(根据您的代码,它是未定义的)

阅读delayedexpansion将解释为什么需要额外的CALL和加倍的% (许多可能的解决方案之一)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47314051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档