批处理 - 将文件夹名称显示为选项

时间:2012-08-08 08:33:25

标签: windows batch-file cmd

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

实施例

C:\code

包含

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

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

1. branch1
2. branch2
3. branch3

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

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

1 个答案:

答案 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%]!