我正在尝试创建一个读取文件夹的小批处理文件(路径设置为文件中的变量)。它应该显示所有子文件夹的名称作为用户的选项,以及当用户选择一个文件夹名称应该保存在变量中供以后使用时。我的想法是我有很多我正在研究的分支,并且在所有这些分支中都有一个我希望用这个批处理运行的jar文件。因此批处理向我提供了文件夹中所有分支的列表,当我选择它时将启动位于该分支文件夹中的jar文件。
实施例
C:\code
包含
C:\code\branch1
C:\code\branch2
C:\code\branch3
然后我希望批处理向用户显示以下菜单:
1. branch1
2. branch2
3. branch3
当用户选择文件夹名称(f.ex.branch2)时,将其保存在变量中供以后使用。
我尝试了很多谷歌搜索,但没有任何帮助。 Sofar我已经设法阅读了子文件夹的名称,但我不知道从哪里开始..有人能指出我正确的方向吗?
答案 0 :(得分:3)
我们首先需要延迟扩张
setlocal enabledelayedexpansion
然后需要所有子文件夹的列表(假设%dir%
被设置为您想要子文件夹的目录):
set Index=1
for /d %%D in (%dir%\*) do (
set "Subfolders[!Index!]=%%D"
set /a Index+=1
)
set /a UBound=Index-1
然后你可以提出一个选择(我添加了一点输入验证,但这还不够):
for /l %%i in (1,1,%UBound%) do echo %%i. !Subfolders[%%i]!
:choiceloop
set /p Choice=Your choice:
if "%Choice%"=="" goto chioceloop
if %Choice% LSS 1 goto choiceloop
if %Choice% GTR %UBound% goto choiceloop
然后您可以使用用户选择的子文件夹设置变量:
set Subfolder=!Subfolders[%Choice%]!