批量迭代一系列文件夹

时间:2014-10-20 12:19:28

标签: windows batch-file

我尝试迭代表示公共父文件夹中兄弟姐妹的字符串数组。

当我尝试输入第一个兄弟" 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 ..
)

1 个答案:

答案 0 :(得分: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 ..
)