0

我正在尝试创建一个读取文件夹的小批处理文件(路径在文件中设置为变量)。它应该将所有子文件夹的名称显示为用户的选择,并且当用户选择一个时,该文件夹名称应保存在变量中以供以后使用。这个想法是我有很多我正在处理的分支,并且在所有这些分支中都有一个我想用这批运行的小 jar 文件。所以批处理向我展示了文件夹中所有分支的列表,当我选择它时,它将启动位于该分支文件夹中的 jar 文件。

例子:

C:\code

包含

C:\code\branch1
C:\code\branch2
C:\code\branch3

然后我希望批处理向用户显示以下菜单:

1. branch1
2. branch2
3. branch3

当用户选择文件夹名称 (f.ex. branch2) 时,将保存在一个变量中供以后使用。

我尝试了很多谷歌搜索,但没有任何帮助。到目前为止,我已经设法阅读了子文件夹的名称,但我不知道从这里去哪里..有人能指出我正确的方向吗?

4

1 回答 1

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%]!
于 2012-08-08T10:07:48.597 回答