Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理以不同的方式访问阵列_Batch File_Command Line - Fatal编程技术网

Batch file 批处理以不同的方式访问阵列

Batch file 批处理以不同的方式访问阵列,batch-file,command-line,Batch File,Command Line,这是我的剧本: @echo off setlocal EnableDelayedExpansion set "memuc=d:\file.exe" set array[0]=foo set array[1]=bar set x=0 :SymLoop if defined array[!x!] ( call "!memuc!" start -n !!array[%x%]!! set /A x=!x! + 1 GOTO :SymLoop ) endlocal 为

这是我的剧本:

@echo off
setlocal EnableDelayedExpansion
set "memuc=d:\file.exe"

set array[0]=foo
set array[1]=bar

set x=0


:SymLoop
if defined array[!x!] (
    call "!memuc!" start -n !!array[%x%]!!

    set /A x=!x! + 1
    GOTO :SymLoop
)

endlocal
  • 为什么
    数组[!x!]
    行不能替换为
    !阵列[%x%]?我想我必须使用
    当访问
    延迟扩展
    变量时
  • 为什么我必须使用
    %x%
    而不是
    !x?。同样,我想
    x
    变量,code>应该是必需的
  • 为什么我必须使用两个
    此处
    !!阵列[%x%]

  • 我认为你的概念错了。
    表示变量的值将尽可能晚地展开

    @echo off
    SETLOCAL EnableDelayedExpansion
    set "_var=stackoverflow"
    set "_var=rules" & echo "%_var% !_var!"
    
    由于扩展延迟,这将打印
    “stackoverflow rules”

    现在回答你的问题:

    添加1。原因是定义了
    。如果您想将实际变量放在那里,您将使用例如您的
    数组[0]
    ,这就是为什么您有
    数组[!x!]
    而没有
    !阵列[%x%]

    Addum 2。您必须使用
    %x%
    来进行即时扩展,因为您希望
    数组[0]
    数组[1]
    。如果你想把它写成
    !x
    然后您将搜索
    %array[!x!]%
    中的
    数组[!x!]

    Addum 3。双感叹号(
    !!
    )之所以出现,是因为
    调用
    引入了一个扩展。因此,首先要立即展开
    %x%
    ,然后展开
    数组[0]
    ,然后展开
    调用