• 締切済み

Win2003(OS⇒64bit)のバッチファイルで、下記のように環境

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

みんなの回答

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

>64bitOSならもう少し許容範囲が広いかと思っていましたので、少し驚きです。 32bit/64bitWindowsというのは、使えるメモリ空間が4GBか8TBかの違いであって、その上で動くソフトが扱える数字の範囲とは関係ありません。 ソースが同じならプログラムも同じ動作。「64bitWindowsなんだから、CMD.EXEのソースを書き換えてintをlong long intにしたのではないか?」という推測は外れということですね。 もしかすると32bitWindowsが無くなるような将来バージョンではlong longになるかも。いやそのころにはPower Shellに置き換わって、CMD.EXEが無くなるか??

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

http://windows.g.hatena.ne.jp/cx20/20100203/p1 http://www.fpcu.jp/dosvcmd/bbs/log/cat3/set_path/3-0758.html 32bitで扱える範囲しかダメなようですね。どうしてもこれ以上の数値を扱う必要があるのであれば、vbsやwsh等で作り変えてみては?

coral33621
質問者

お礼

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

関連するQ&A