2014-10-20 84 views
0

我嘗試遍歷表示同一父文件夾內同胞的字符串數組。迭代批處理文件夾數組

當我嘗試輸入第一個兄弟「a」時,我的路徑檢查失敗,程序終止。 終止後,我終於在第一個兄弟姐妹內。

set dir="C:\somepath\" 
set subdir[0]="a" 
set subdir[1]="b" 

cd %dir% 

for /F "tokens=2 delims==" %%s in ('set subdir[') DO (
    cd %%s 

    set sub=%dir%%%s 
    if %CD% neq [%sub%] exit /b 1 

    echo %%s 

    cd .. 
) 

對於我來說,它好像%CD%變量沒有CD的變化之後改變了,但我沒能重現這種懷疑這樣的:

cd a 
echo %CD% 
cd .. 

我自從我們現在的幾個人以來,我努力嘗試 - 沒有成功。
任何人都可以給我一個提示嗎?


編輯:

我花了更多的一些 '分鐘',但現在就像一個魅力。

Setlocal EnableDelayedExpansion 

set dir="C:\somepath\" 
set subdir[0]="a" 
set subdir[1]="b" 

for /F "tokens=2 delims==" %%s in ('set %~2 [') DO (
    cd %%~s 
    set sub=!dir:~1,-1!%%~s 

    if [!CD!] neq [!sub!] exit /b 1 

    echo !CD!  
    cd .. 
) 

回答

2

不很肯定你的邏輯(尤其是比較),但你需要delayed expansion

setlocal enableDelayedExpansion 
set dir="C:\somepath\" 
set subdir[0]="a" 
set subdir[1]="b" 

cd %dir% 


for /F "tokens=2 delims==" %%s in ('set subdir[') DO (
    cd %%s 

    set sub=!dir!%%s 
    if [!CD!] neq [!sub!] exit /b 1 

    echo %%s 

    cd .. 
) 
+0

THX您的時間,我現在又增加了一個工作版本,這是你說的比較關於? – 2014-10-21 06:10:04