- 締切済み
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
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4901/10362)
>64bitOSならもう少し許容範囲が広いかと思っていましたので、少し驚きです。 32bit/64bitWindowsというのは、使えるメモリ空間が4GBか8TBかの違いであって、その上で動くソフトが扱える数字の範囲とは関係ありません。 ソースが同じならプログラムも同じ動作。「64bitWindowsなんだから、CMD.EXEのソースを書き換えてintをlong long intにしたのではないか?」という推測は外れということですね。 もしかすると32bitWindowsが無くなるような将来バージョンではlong longになるかも。いやそのころにはPower Shellに置き換わって、CMD.EXEが無くなるか??
- ok-kaneto
- ベストアンサー率39% (1798/4531)
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等で作り変えてみては?
お礼
情報ありがとうございます。こちらのマシンでコマンドプロンプト入力したところ、同じことを確認できました。大変たすかりました。 ちなみにですが、この制限はOSに依存しないでしょうか?64bitOSならもう少し許容範囲が広いかと思っていましたので、少し驚きです。