2013-05-14 2 views
0

좋습니다. 제목에서 달성하려는 작업에 대한 아이디어가있을 수 있습니다.숫자가있는 폴더를 일괄 적으로 선택하십시오.

내가하고 싶은 것은 [tree]이며 폴더 목록을 표시하므로 (tree 명령) 폴더를 선택하고 숫자를 사용하여 폴더를 선택할 수있게하려면 catch는 내가 필요없이 수행 할 수 있어야합니다. 이미 폴더 이름을 알고 있습니다.

예. 은 숫자로 몇 가지 방법을 내가 선택할 수 있도록 한 후,

cd C:\windows 
tree 
set input= 
set /p input=Choose: 
if %input%== Folder 1 goto :B 
if %input%== Folder 2 goto :C 
etc. 

그래서 내가 그것을 나무에 수 있어야 변수로 각 폴더를 설정하고 [이 내가 IT가해야 할 싶지 않는 무엇인가]?

도와주세요!

+0

나는 "순수한 배치"에서이 작업을 수행 할 수 있지만, 어떤 이유로 나는 하나의 작은 분을 소비하지 않습니다 이 프로젝트. 또한 Google을 사용하면 이미 그물에 완전한 "배치 트리"솔루션을 찾을 수 있습니다. – Endoro

답변

2

내가이 문제에 대한 적절한 해결책이라고 생각이 배치 파일을 시도해보십시오

@echo off 

echo Select a folder. Terminate folder number with + to open it. 
echo/ 
call :SelectFolder selectedFolder 
echo/ 
echo Selected folder: %selectedFolder% 
goto :EOF 


:SelectFolder returnVar 
setlocal EnableDelayedExpansion 
:nextFolder 
    echo/ 
    echo %cd% 
    set i=0 
    set folder[0]=.. 
    echo  0- .. 
    for /D %%d in (*) do (
     set /A i+=1 
     set folder[!i!]=%%d 
     echo  !i!- %%d 
    ) 
    :getOption 
    set option=0+ 
    set openFolder=1 
    set /P "option=Enter the desired folder: " 
    if "%option:~-1%" equ "+" (
     set option=%option:~0,-1% 
    ) else (
     set openFolder= 
    ) 
    if %option% gtr %i% goto getOption 
    cd "!folder[%option%]!" 
if defined openFolder goto nextFolder 
endlocal & set %1=%cd% 
exit /B 
+0

어떻게 명령 행을 열어두고'cd % selected %'를 실행할 수 있습니까? 그래서 나는 나중에 다른 명령을 실행하기 때문에 마지막에'+'를 입력하고 싶지 않습니다. – Spurious

2

이 배치 파일을 실행하면 폴더를 선택한 다음 변수에 폴더 경로를 반환합니다.

@if (@CodeSection == @Batch) @then 

@echo off 
echo Select a folder: 
pause 

for /F "delims=" %%a in ('CScript //nologo //E:JScript "%~F0"') do (
    set Destination_Folder=%%a 
) 
echo "%Destination_Folder%" 
pause>nul 
:EXIT 
exit 

@end 

// Creates a dialog box that enables the user to select a folder and display it. 
var title = "Select a folder", rootFolder = 0; 
var shl = new ActiveXObject("Shell.Application"); 
var folder = shl.BrowseForFolder(0, title, 0, rootFolder); 
WScript.Stdout.WriteLine(folder ? folder.self.path : ""); 
+0

이 기능은 작동하지만 일괄 적으로 전체 프로세스를 에뮬레이션 할 수있는 방법이 있습니다. @foxidrive – cmd

+0

일반적인 방법은 없습니다. 목록에 200 개의 폴더가 있고 여러 페이지를 처리해야합니다. 작업에 대한 구체적인 내용이 없으면 작업 솔루션을 간단히 만들 수 없습니다. – foxidrive