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]%