当我尝试使用for each方法迭代文件夹时,我无法访问当前索引,而且我也无法手动保留一个:
@echo off
set "i=0"
set folders='dir /b /ad'
for /f "eol=: delims=" %%D in (%folders%) do (
:: echo %%D
echo %i%
set /a "i+=1"
)
当我尝试使用基于this example的fori方法进行迭代时,我甚至无法使其工作:
@echo off
cls
set "i=0"
:SymLoop
set folders='dir /b /ad'
if defined folders[%i%] (
echo %%folders[%i%]%%
set /a "i+=1"
GOTO :SymLoop
)
我意识到自己对这个主题完全缺乏了解,所以我很欣赏任何纠正和/或建议。
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
@echo off
set /a i=0
set folders='dir /b /ad'
for /f "eol=: delims=" %%D in (%folders%) do (
REM echo %%D
CALL echo %%i%%
CALL SET "folders[%%i%%]=%%D"
set /a i+=1
)
SET fol
ECHO ---------------------------
@echo off
set /a i=0
:SymLoop
set folders='dir /b /ad'
if defined folders[%i%] (
CALL echo %%folders[%i%]%%
set /a "i+=1"
GOTO SymLoop
)
GOTO :EOF
请参阅有关delayed expansion
的SO的无数示例,以获得更简单的方法。
在::-comments
中使用(code block)
不是一个好主意,因为它可以打破阻止。
set /a
通常不需要"报价"