2012-08-08 3 views
0

폴더를 읽는 작은 배치 파일을 만들려고합니다 (경로가 파일의 변수로 설정 됨). 사용자를위한 선택 항목으로 모든 하위 폴더의 이름을 표시하고 나중에 사용할 수 있도록 폴더 이름을 변수에 저장해야하는 경우를 선택해야합니다. 아이디어는 내가 일하고있는 많은 지점을 가지고 있고 그들 모두에 내가이 일괄 처리로 실행하고 싶은 작은 jar 파일이 있다는 것입니다. 그래서 배치는 폴더의 모든 브랜치 목록을 보여 주며, 선택할 때 해당 브랜치 폴더에있는 jar 파일을 시작합니다.일괄 처리 - 폴더 이름을 옵션으로 표시합니다.

예 :

1. branch1 
2. branch2 
3. branch3 

사용자가 폴더 이름을 선택했습니다

C:\code 

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

가 그럼 난 배치가 사용자에게 다음과 같은 메뉴를 제공 할 포함 (f.ex. branch2)는 나중에 사용하기 위해 변수에 저장됩니다.

저는 인터넷 검색을 많이 해봤지만 도움이되는 정보는 없습니다. Sofar 저는 서브 폴더의 이름을 읽을 수 있었지만 여기에서 어디로 가야할지 잘 모릅니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

set Index=1 
for /d %%D in (%dir%\*) do (
    set "Subfolders[!Index!]=%%D" 
    set /a Index+=1 
) 
set /a UBound=Index-1 

이 그럼 당신은 선택의 여지를 제공 할 수 있습니다 :

+0

내가 제안하는 한 가지 사실은 Powershell이 ​​훨씬 쉽게 전망을 만들 수 있다는 것입니다. 그게 당신을위한 옵션이라면, 나는 그것을 권하고 싶습니다! –

+0

글쎄, 내가 실행할 수있는 .bat와 비슷한 파일을 만들 수 있다면 행복 할 것입니다. :) PS로 보겠습니다 .. ty :) – Herter

답변

3

우리는 먼저 (당신의 하위 폴더를 원하는 디렉토리로 설정되어 %dir% 가정) 모든 하위 폴더의 목록이 필요 지연 확장

setlocal enabledelayedexpansion 

필요 (약간의 입력 유효성 검사를 추가했지만 충분하지 않습니다.) :

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

+0

굉장한 답변! 나는 이런 식으로 오랫동안 찾고 있었다. 감사! – bmoran

+0

공백이있는 디렉토리를 올바르게 처리하는 부 수정 :'Set Subfolders [! Index!] = "%% D"' –