|
566) if文での数値比較桁数について とおる 2002/08/21(水) 12:06 |
|
はじめまして Diskの空き容量を閾値と比較し警告を出すbatを作成しています。 dirの結果 29 個のディレクトリ 3,152,592,896 バイトの空き領域 から3152592896 を抜き出しif文で比較してもきちんとした 結果が得られません。 テストしてみると9桁まではOKで10桁からNGのようです。 何か良い方法は無いものでしょうか? |
|
574) Re:if文での数値比較桁数について SYSOP 2002/08/28(水) 03:56 |
|
とおるさん こんにちは。 >Diskの空き容量を閾値と比較し警告を出すbatを作成しています。 >dirの結果 >29 個のディレクトリ 3,152,592,896 バイトの空き領域 >から3152592896 を抜き出しif文で比較してもきちんとした >結果が得られません。 >テストしてみると9桁まではOKで10桁からNGのようです。 > >何か良い方法は無いものでしょうか? どういう環境(Windowsのバージョン)で、どういった開発環境等が使用可能で、その「閾値」が具体的にどれくらいか……によりけりな気がします。 そのへん、もう少し前提条件を詳しくお書きになってみては。 YanaKen |
|
576) Re:if文での数値比較桁数について じゃく 2002/08/29(木) 19:26 |
|
とおるさんこんにちは。 >Diskの空き容量を閾値と比較し警告を出すbatを作成しています。 >dirの結果 >29 個のディレクトリ 3,152,592,896 バイトの空き領域 >から3152592896 を抜き出しif文で比較してもきちんとした >結果が得られません。 >テストしてみると9桁まではOKで10桁からNGのようです。 3152592896を抜き出しと書いてあるところから、WindowsNT/2000系だと仮定して回答します。 当方 XPで実験しましたが10桁ではうまく比較できないことが ありますね。 しかし、ディスクの空き容量チェックならば、文字列操作で、 下3桁をのぞいて数値化すれば、KB単位でのチェック、 下6桁をのぞけばMB単位のチェックができますが、 それではだめなのでしょうか? |
|
785) Re:if文での数値比較桁数について vampire 2002/10/10(木) 12:44 |
|
>29 個のディレクトリ 3,152,592,896 バイトの空き領域 >から3152592896 を抜き出しif文で比較してもきちんとした >結果が得られません。 >テストしてみると9桁まではOKで10桁からNGのようです。 > >何か良い方法は無いものでしょうか? バッチの標準コマンドでの数値比較は限界があるようですね。 そこで、AWKを使って比較処理をするコマンドを作ってみました。15桁の数値比較まで確認済みです。 参考になれば幸いです。 コマンドは以下のとおりです。 jgawk "{if($1<$2)exit 1;else if($1>$2)exit 2;else exit 3}" numeric.txt if not errorlevel 4, if errorlevel 3, goto RC3 if not errorlevel 3, if errorlevel 2, goto RC2 if not errorlevel 2, if errorlevel 1, goto RC1 :RC3 左辺=右辺の処理 :RC2 左辺>右辺の処理 :RC1 左辺<右辺の処理 AWKはJGAWK(フリーソフト)を使います。 JGAWKは以下にあります。 http://www.vector.co.jp/soft/dos/util/se000208.html 比較する数値は、numeric.txtファイルに次のような形で取り込まれていることが条件です。 1234567890 1234567891 数値と数値の間は半角スペースを一つ以上置く。数値は半角であること。(コンマがあってはならない) 留意事項 ●第1行の数値のみ比較する。2行目以降に数値を入力しても処理されない。 ●比較可能な桁数はJGAWKの仕様に依存する(15桁までテストしましたがOKです)。 ●数値以外が入力されている場合は、JGAWKがそれらをどのような値として評価するかに依存する。 ●両辺が数値の場合、比較は「文字列比較」ではなく、「数値比較」を行う。したがって、"001"と"1"は等価、"+1"と"1.0"は等価となる。 ●比較結果をリターンコードで返す。 左辺<右辺 RC : 1 左辺>右辺 RC : 2 左辺=右辺 RC : 3 ●リターンコードはexit文の値を変えることにより任意に設定が可能(0~255(10進値))。 テスト確認環境 MS-DOS(Ver 5), WinXP |
|
this article refers Vector Soft Library..
|