Batch file 带有数组循环[%x%]的批处理concat变量

Batch file 带有数组循环[%x%]的批处理concat变量,batch-file,Batch File,“如果定义”部分工作正常。但“如果存在”部分没有。 看起来变量x是个问题。我怎样才能解决这个问题 输出: 缺少“C:\Program Files(x86)\Embarcadero\Studio\20.0\x” 不能以这种方式嵌套变量。 尝试延迟扩展(未测试): 使用for循环(也未测试)迭代数组会更好,更具可读性: 有关和的详细信息不能以这种方式嵌套变量。 尝试延迟扩展(未测试): 使用for循环(也未测试)迭代数组会更好,更具可读性: 有关和的详细信息在向“修补列表”添加项目时,我不想编辑fo

“如果定义”部分工作正常。但“如果存在”部分没有。 看起来变量x是个问题。我怎样才能解决这个问题

输出:

缺少“C:\Program Files(x86)\Embarcadero\Studio\20.0\x”


不能以这种方式嵌套变量。 尝试延迟扩展(未测试):

使用for循环(也未测试)迭代数组会更好,更具可读性:


有关和的详细信息

不能以这种方式嵌套变量。 尝试延迟扩展(未测试):

使用for循环(也未测试)迭代数组会更好,更具可读性:


有关和的详细信息

在向“修补列表”添加项目时,我不想编辑for循环,这就是我不使用for循环语句的原因。但其余的都很好。谢谢大家!@int3g3r-感谢您的更新。如果这样做有效,您也可以接受答案,以便下一个检查此问题的用户更方便。我不想在向“修补列表”添加项目时编辑for循环,这就是我不使用for循环语句的原因。但其余的都很好。谢谢大家!@int3g3r-感谢您的更新。如果这样做有效,您也可以接受答案,以便下一个检查此问题的用户更容易找到答案。
@echo off
set "RADmainDir=C:\Program Files (x86)\Embarcadero\Studio\20.0\"
set "patchList[0]=bin\dsymlink.exe"
set "patchList[1]=bin\themeloader260.bpl"

set "x=0"
:SymLoop
if defined patchList[%x%] (
    IF EXIST "%RADmainDir%%patchList[%x%]%" (
    echo:OK
    ) ELSE (
    echo:MISSING
    )
    set /a "x+=1"
    GOTO :SymLoop
)
@echo off
set "RADmainDir=C:\Program Files (x86)\Embarcadero\Studio\20.0\"
set "patchList[0]=bin\dsymlink.exe"
set "patchList[1]=bin\themeloader260.bpl"

setlocal enableDelayedExpansion
set "x=0"
:SymLoop
if defined patchList[%x%] (
    IF EXIST "!RADmainDir!!patchList[%x%]!" (
     echo:OK
    ) ELSE (
     echo:MISSING
    )
    set /a "x+=1"
    GOTO :SymLoop
)
@echo off
set "RADmainDir=C:\Program Files (x86)\Embarcadero\Studio\20.0\"
set "patchList[0]=bin\dsymlink.exe"
set "patchList[1]=bin\themeloader260.bpl"

setlocal enableDelayedExpansion

for /l %%l in (0-start;1-step;1-end) do (
  if exist  "!RADmainDir!!patchList[%%l]!" (
     echo exists
  ) else (
     echo does not exists
  )
)