2013-09-16 3 views
1

잠재적으로 숫자 하이픈을 포함 할 수있는 배치 파일에 입력을 받아야합니다. 1-5는 사용자의 입력으로 1, 2, 3, 4 및 5를 의미합니다.두 숫자 사이의 시퀀스를 나타내는 하이픈을 사용한 숫자 배치 입력

나는 사용자로부터 하나의 문자 입력을받는 방법을 알고 있지만 입력을 5 개 (또는 그 이상)의 개별 항목으로 나눠서 배플을한다.

+0

덕분에 팁을 위해, 그 체크 표시를 보지 못했다. :) – Lawivido

답변

0

for /fdelims과 함께 사용하면 문자열을 분리 할 수 ​​있습니다. 범위를 루프하려면 for /L을 사용할 수 있습니다. 명령 행에 help for을 입력하여 루프 유형을 읽으십시오.

@echo off 
set /p "input=Enter a number or range: " 

REM The user must enter either a plain number or a range. Either way, we split 
REM the user input on the minus sign. If there's no minus sign, then only 
REM %upper% won't get a value. 
for /f "usebackq delims=- tokens=1,2" %%a in ('%input%') do (
    set "lower=%%a" 
    set "upper=%%b" 
) 

REM If %upper% has a value, then input was a range. Otherwise, input contained 
REM a single number. 
if not "%upper%"=="" goto :handle_range 

echo Single number: %lower% 
goto :eof 

:handle_range 
echo Range %lower% to %upper% 

REM We can use the numeric for loop to loop over the full range. 
for /l %%i in (%lower%, 1, %upper%) do (
    echo  %%i 
) 

goto :eof 
+0

큰 감사 @indiv. 이제이 루프를 사용하여 (루프의 숫자가 폴더 이름 임) 동일한 번호의 접두사가있는 여러 파일을 단일 폴더에서이 번호가 매겨진 폴더로 반복적으로 복사해야합니다. 그 일을 어떻게 하죠? 귀하의 의견에 다시 한번 감사드립니다. – Lawivido

1
@echo off 

set /P "input=Enter a number or range: " 

for /F "tokens=1,2 delims=-" %%a in ("%input%") do (
    set lower=%%a 
    set upper=%%b 
) 
if not defined upper set upper=%lower% 
for /L %%i in (%lower%,1,%upper%) do (
    echo Process number %%i 
) 
관련 문제