2014-02-27 2 views
0

안녕하세요, 저는 일괄 프로그래밍을 처음 사용하고 있으며 무작위 누머가 두 숫자 사이에 있는지 확인하는 방법을 알고 싶습니다.CMD에서 난수가 두 숫자 사이에 있는지 확인하는 방법은 무엇입니까?

@echo off 

set /a num = %random% 
if %num% == 0-8191 goto o1 
if %num% == 8191-16382 goto o2 
if %num% == 16382-24573 goto o3 
if %num% == 24573-32764 goto o4 

:o1 
msg * 1 
goto end 

:o2 
msg * 2 
goto end 

:o3 
msg * 3 
goto end 

:o4 
msg * 4 
goto end 


:end 
pause 

내가 뭘 잘못했는지 모르는 당신이있는 경우에 더 나은 버전을 보여 주시기 바랍니다 : D

+0

내 첫 번째 질문은 WH 될 경우 경우 : 당신이나 다른 사람이 코드를 다시 방문 할 미래의 코드 실제 프로그래밍 언어를 사용하는 대신이 작업을 일괄 적으로 수행합니다. 일괄 처리는 극히 제한적이며 기본 자동화보다 조금 효과적입니다. –

답변

7

다크 Canuck에서 코드는 질문 질문의 "더 나은"부분에 대한

의을 비교 한 부분에 응답

set /a "num=%random% %% 4 + 1" 
goto o%num% 
5

당신의 논리가 여기에 잘못

감사합니다. % num % == 0-8191은 0에서 8191을 뺀 다음 -8191을주고 num과 비교합니다. 아무도 방아쇠를 당기지 않으면, 당신은 o1로 떨어질 것입니다.

당신은 아마 이런 식으로 일을 더 나을 것 :

if %num% LEQ 8191 goto o1 
if %num% LEQ 16382 goto o2 
if %num% LEQ 24573 goto o3 
if %num% LEQ 32764 goto o4 

이 확인 납입 주어진 수보다 작거나 같은, 적절한 라벨로 이동합니다. 값이 증가하는 순서이므로, % num %가 16382에서 8191 사이에 있으면 첫 번째 검사에서 실패하고 두 번째로 넘어가고 나머지는 건너 뜁니다.

비교 연산자에 대한 자세한 내용은 this question을 참조하십시오.

+0

'if' 문에서 수식을 수행 할 수 없으므로 실제로 문자열이 문자열 "0-8191"과 비교되는 식입니다. – unclemeat

0

이 질문에 응답하고 쉽게 이해를 위해 바람직 할 수있다

것은 %의 NUM 개의 %의 ​​GEQ 0 %의 NUM 개의 %의 ​​LEQ 8191 고토 O1은

관련 문제