Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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 Windows批处理:嵌套循环计数器不工作_Batch File - Fatal编程技术网

Batch file Windows批处理:嵌套循环计数器不工作

Batch file Windows批处理:嵌套循环计数器不工作,batch-file,Batch File,我是批处理方面的新手,一直试图让它正常工作,但不知道我做错了什么。由于某种原因,计数器没有递增 @echo off set local enabledelayedexpansion set /a counter=0 for /F "delims=" %%a in ('dir /b/ad/o "C:\Sources"') do ( for /F "delims=" %%i in ('dir /b/ad/o "C:\Sources\%%a"') do ( set a[%counter]=%%i s

我是批处理方面的新手,一直试图让它正常工作,但不知道我做错了什么。由于某种原因,计数器没有递增

@echo off
set local enabledelayedexpansion

set /a counter=0
for /F "delims=" %%a in ('dir /b/ad/o "C:\Sources"') do (
for /F "delims=" %%i in ('dir /b/ad/o "C:\Sources\%%a"') do (
set a[%counter]=%%i
set /a counter=counter+1
echo value of counter is: %counter%
)
)
echo array 0 is: %a[0]%
echo array 1 is: %a[1]%
SET LOCAL实际上应该是SETLOCAL。这是一个命令。此外,嵌套变量也应引用!瓦尔!而不是%var%。如果使用%var%,它将使用外部作用域而无法正常工作


顺便说一句,如果你想让你的变量只作用于你的批处理文件,你应该用ENDLOCAL结束你的脚本,你介意告诉我们你的代码应该做什么和它实际做什么吗?我们通常没有水晶球。。。请阅读以下内容:…first for loop获取目录中的所有文件夹,并循环子文件夹以分配给数组。问题中的set local是一个输入错误,但是!与之相比,%起了作用。谢谢你的帮助!需要的理由是什么!我知道的唯一原因是,这就是它的工作方式。批处理文件似乎就是这样解析作用域的。
@ECHO OFF

REM "SETLOCAL" not "SET LOCAL"
SETLOCAL enabledelayedexpansion

SET counter=0
FOR /L %%a IN (1,1,10) DO (
    FOR /L %%i IN (1,1,10) DO (    
        REM USE "!" instead of "%"
        SET  X[!counter!]=%%i
        SET /a counter=!counter! +1
        echo value of counter is: !counter!
    )
)
ECHO array 0 is: %X[0]%
ECHO array 1 is: %X[1]%