2017-05-03 8 views
1

숫자 비교 연산 (예 : gtr)을 사용하는 배치 파일 IF 비교가 인수를 문자열로 취급하는 대신 숫자로 수행 될 때 정확하게 스펙을 찾을 수 없습니다.일괄 처리 IF 비교 연산이 숫자로 수행되는 경우

이 질문은 Windows batch file IF failure - How can 30000000000000 equal 40000000000?이지만 그 이유는 - 영문자가 아닌 문자가 있으면 IF는 문자열 비교를 수행함 - 완료되지 않았습니다. 예를 들어 :

@echo off& setlocal enabledelayedexpansion 
if "123" gtr "99" echo greater 
if 099 gtr 10 echo greater 
if "+1000" gtr "0x99" echo greater 
if 12-1 gtr 3 echo greater 
if +1000 gtr 0x99 echo greater 

마지막 위의 경우는 수치 다 더 큰 반향 ... 아직 둘의 비교 조합의면은 숫자로 완전히 구성되지 않습니다.

답변

3

두 인수를 모두 숫자로 변환 할 수있는 경우 양쪽이 인용되지 않으면 비교가 숫자로 수행됩니다. +1000 및 0x99은 파싱 규칙에 따라 두 숫자이므로

따라서, (다음의 비교는 (a 문자열 0x 시작하는 헥스로 해석하고, 그렇지 않으면 다음 진수, 0 시작하면된다)

수치 행한다 set /? 참조