批处理文件:在for循环中访问数组元素

网络狼

我对如何从Windows批处理文件中的for循环内部访问数组值感到困惑。这是我的测试:

@ echo off
SET ROOT=c:\temp\test

REM set up array of local dir paths
SET LDIR[1]=data
SET LDIR[2]=data\fonts
SET LDIR[3]=data\images

for /L %%s in (1,1,3) do (
  IF EXIST %ROOT%\%%LDIR[%%s]%% (
    call echo %ROOT%\%%LDIR[%%s]%% exists
  ) else (
    call echo %ROOT%\%%LDIR[%%s]%% does not exist
  )
)

我得到输出:

c:\temp\test\data does not exist
c:\temp\test\data\fonts does not exist
c:\temp\test\data\images does not exist

即使存在迪尔斯。我相信在IF EXISTS语句中,数组未正确取消引用。正确的方法是什么?另外,为什么有必要使用“调用”来使数组正确地解除引用? - 谢谢!

恩波科马卡
@ echo off
SET ROOT=c:\temp\test

REM set up array of local dir paths
SET LDIR[1]=data
SET LDIR[2]=data\fonts
SET LDIR[3]=data\images
setLocal enableDelayedExpansion
for /L %%s in (1,1,3) do (
  IF EXIST %ROOT%\!LDIR[%%s]! (
    echo %ROOT%\!LDIR[%%s]! exists
  ) else (
    echo %ROOT%\!LDIR[%%s]! does not exist
  )
)
endLocal

问题是您需要以与ECHOes相同的方式“调用” if,但是IF命令不能与CALL一起使用,因此您的最后希望是延迟扩展。这样一来,由于不需要CALL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

批处理文件:在嵌套循环中处理列表元素

来自分类Dev

批处理文件:逃脱!在 For 循环中

来自分类Dev

避免在Windows批处理文件的for循环中打印

来自分类Dev

批处理文件:for循环中的转义问号

来自分类Dev

避免在Windows批处理文件的for循环中打印

来自分类Dev

批处理文件-在For循环中获取卷标

来自分类Dev

批处理文件:for循环中的转义问号

来自分类Dev

在批处理文件中的for循环中转义括号

来自分类Dev

Windows批处理文件循环中的字符串

来自分类Dev

批处理文件以“”循环

来自分类Dev

无法访问批处理文件中的数组索引

来自分类Dev

从批处理文件中的数组中删除元素

来自分类Dev

Windows批处理文件处理-循环

来自分类Dev

Windows批处理文件处理-循环

来自分类Dev

批处理文件:在FOR循环中跳过以_开头的文件夹

来自分类Dev

批处理文件将文本文件的行设置为循环中的单个变量

来自分类Dev

对于批处理文件中的循环

来自分类Dev

批处理文件“ for”循环-多行

来自分类Dev

批处理文件中的for循环问题

来自分类Dev

批处理文件循环带空格

来自分类Dev

批处理文件:递归循环

来自分类Dev

批处理文件中的For循环

来自分类Dev

批处理文件选择命令循环

来自分类Dev

使用变量的批处理文件 FOR 循环

来自分类Dev

操作循环批处理文件输出

来自分类Dev

批处理文件基础:在for循环中向变量添加硬编码整数

来自分类Dev

批处理文件:在for循环中附加一个字符串

来自分类Dev

在批处理文件中for循环中%%和/ r是什么意思?

来自分类Dev

如何在循环中设置时间限制(批处理文件)