2012-08-08 18 views
0

我試圖創建一個小的批處理文件,其內容的文件夾(路徑設置爲文件中的一個變量)。它應該作爲用戶,當用戶選擇一個文件夾名稱應保存在供以後使用變量選擇顯示所有子文件夾的名稱。這個想法是,我有很多分支,我在這個批處理中有一個小的jar文件。所以批處理給我提供了文件夾中所有分支的列表,當我選擇它時將啓動位於該分支文件夾中的jar文件。批次 - 顯示文件夾名稱選項

例:

C:\code 

包含

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

然後我想批呈現以下菜單給用戶:

1. branch1 
2. branch2 
3. branch3 

當用戶選擇的文件夾名稱(f.ex. branch2)保存在變量中供以後使用。

我已經試過了很多谷歌搜索,但沒有任何幫助的走了過來。 Sofar我已經設法讀取子文件夾的名字,但是我不知道該從哪裏下去......任何人都可以指出我正確的方向嗎?

+0

我可能會提出的一件事是,Powershell會使這個更容易的前景。如果這是您的選擇,我會推薦它! – 2012-08-08 08:37:29

+0

好,只要它可以創建類似的文件爲.bat,我可以跑,然後我很開心:) 我馬上去PS .. TY :) – Herter 2012-08-08 09:46:03

回答

3

我們首先需要延遲擴展

​​

這時需要所有子文件夾列表(假設%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%]! 
+0

嗨它看起來像它會做的正是我想要什麼,但我有一個小問題。無論哪個目錄我設置%DIR%,它仍然給我在C中的所有文件夾的列表:\ – Herter 2012-08-08 10:42:52

+0

真棒答案!我一直在尋找這樣一個很長的時間。謝謝! – bmoran 2013-02-07 14:18:40

+0

修正了一個空白處理目錄的小問題:'set Subfolders [!Index!] =「%% D」' – 2015-08-16 07:37:14

相關問題