2017-10-09 12 views
0

は、私が現在のインデックスへのアクセスがないと私は手動でも1維持に失敗しました:配列を一括して反復処理する際に、現在のインデックスを参照するにはどうすればよいですか?私はそれぞれのアプローチのためにフォルダを反復処理しようとすると

@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

を必要としないhttps://stackoverflow.com/questions/10166386/arrays-linked-lists-and-other-data-structures-in-cmd-exe-batch-script/10167990#10167990 – Aacini

答えて

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 

SOについてdelayed expansion単純な方法のための無限の例を参照してください。

::-comments(code block)の範囲内で使用することをお勧めします。ブロックを破る可能性があります。

set /aは、通常、 "引用符"

関連する問題