2017-05-03 15 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 

のみ最後上記数値的に行われ、大きなエコー...まだその比較-OPの側いずれも数字で完全に構成されている場合は。

答えて

3

両方の引数を数値に変換できる場合は、どちらの辺も引用符で囲まれていない限り、数値的に比較が実行されます。したがって

、+1000と0x99の両方の解析ルールに従って数値であるため(set /?は、比較を(数値的に行われることが0を開始した場合0xを開始文字列がヘクスとして解釈そうでなければ、次に進参照)

関連する問題