同じ結果を得るための異なる方法:
set /A "test=0, aux=(800-eventValue)*(eventValue-805), test=(aux-1)/aux" 2>NUL
if %test% equ 0 echo The value is in 800-805 range
説明:
set /A (lowLimit-value) is negative or zero if value >= lowLimit
set /A (value-UpLimit) is negative or zero if value <= upLimit
set /A (lowLimit-val)*(val-UpLimit) is positive or zero if value is in range,
negative otherwise, and
set /A aux=(Low-val)*(val-Up), test=(aux-1)/aux set test=0 if value is in range,
test=1 otherwise
これは数値値が所与の内側にあるかどうかをテストするための非常に効率的な方法であります範囲は、いくつかの範囲をテストするために拡張することさえできます。in the same expression;価値がまさに限界の1つである場合には、0による可能な除算に対する予防措置として小規模な特別管理が必要です。
どのようなエラーが表示されますか?その文法は私にとって正しいものです。 –
私は本当の "エラー"自体を得ていませんが、プログラムはすぐに 'echo%eventEffect%'と 'echo%eventValue%'を実行し、パラメータ内に収まっていても 'eventEffect'文字列 "nothing" – tjbushra
変数名のまわりに '%'がありません。 '%eventvalue%gtr 800 if%eventvalue%leq 805 set eventEffect = tax'です。 – SomethingDark