顺便说下,我当初遭遇问题的原始需求是,动态生成带序号的目录列表,然后交互时,用户可以输入序号列表,来选择相应的待处理目录。
在始终无法使用&rem.替换方法来实现序号列表和目录列表的映射时,
当初我用到的是一种相对简单直观一点的方法,就是在创建dirs menu的for循环中,
每个迭代中set一个新变量出来,
set /A index=0
for %%I in ("%dirs::=" "%") do (
set "dir=%%~I"
set /A index=!index!+1
echo. !index! !dir!
set "dirs.!index!=!dir!"
)
映射时就相对简单些了,
set "list="
for %%I in (%choices%) do (
set /A "choice=%%~I"
if !choice! GEQ 1 (
if !choice! LEQ %index% (
call set "list=!list!:%%dirs.!choice!%%"
)
)
)
if "%list%"=="" (
echo.None valid choices, try again.
goto :selecting
)
set "dirs=%list:~1%"