我尝试迭代表示公共父文件夹中兄弟姐妹的字符串数组。
当我尝试输入第一个兄弟" 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 ..
)
答案 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 ..
)