The Dark Canuck의 코드는 질문의 비교 부분에 대한 답변입니다.
질문의 "더 나은"부분
set /a "num=%random% %% 4 + 1"
goto o%num%
-------------------당신의 논리는 여기에서 잘못되었습니다. % 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이 주어진 숫자보다 작거나 같은지 확인하고 적절한 레이블로 이동합니다. 값이 오름차순이므로 하한을 확인할 필요가 없습니다. % num %가 16382에서 8191 사이이면 첫 번째 검사에 실패하고 두 번째 검사로 넘어가 나머지는 건너 뜁니다.
비교 연산자에 대한 자세한 내용은 이 질문을 참조하십시오 .
-------------------이것은 귀하의 질문에 대한 답변이며 향후 귀하 또는 다른 사람이 코드를 다시 방문 할 때 코드를 더 쉽게 이해할 수 있도록 선호 될 수 있습니다.
% num %이면 GEQ 0이면 % num %이면 LEQ 8191은 o1로 이동합니다.
출처
https://stackoverflow.com/questions/22079955