プロが教える店舗&オフィスのセキュリティ対策術

Win2003(OS⇒64bit)のバッチファイルで、下記のように環境変数を設定し、比較を行なったが、ある値を超えると、うまく比較ができなくなります。環境変数に値をセットする際にオーバーフローが起きたのではないか考えています。このような制限があるのでしょうか?
※環境変数にセットできる値は(-2147483648~2147483647)の範囲内に限られるようです。

(1)
set SIZE1=2387301315
set SIZE2=2387301315
SIZE1 geq SIZE2 ⇒ OK
(2)
set SIZE1=2387301315
set SIZE2=-1
SIZE1 geq SIZE2 ⇒ NG

(3)
set SIZE1=2387
set SIZE2=2400
SIZE1 geq SIZE2 ⇒ OK

A 回答 (2件)

>64bitOSならもう少し許容範囲が広いかと思っていましたので、少し驚きです。



32bit/64bitWindowsというのは、使えるメモリ空間が4GBか8TBかの違いであって、その上で動くソフトが扱える数字の範囲とは関係ありません。

ソースが同じならプログラムも同じ動作。「64bitWindowsなんだから、CMD.EXEのソースを書き換えてintをlong long intにしたのではないか?」という推測は外れということですね。

もしかすると32bitWindowsが無くなるような将来バージョンではlong longになるかも。いやそのころにはPower Shellに置き換わって、CMD.EXEが無くなるか??
    • good
    • 0

http://windows.g.hatena.ne.jp/cx20/20100203/p1
http://www.fpcu.jp/dosvcmd/bbs/log/cat3/set_path …

32bitで扱える範囲しかダメなようですね。どうしてもこれ以上の数値を扱う必要があるのであれば、vbsやwsh等で作り変えてみては?
    • good
    • 0
この回答へのお礼

情報ありがとうございます。こちらのマシンでコマンドプロンプト入力したところ、同じことを確認できました。大変たすかりました。
ちなみにですが、この制限はOSに依存しないでしょうか?64bitOSならもう少し許容範囲が広いかと思っていましたので、少し驚きです。

お礼日時:2010/03/02 13:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!