[前の記事]« 各行の先頭2バイトをチェックしてデータを複数ファイルに振り分けたい
[次の記事]テキストエディタって? »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「ERRORLEVEL」索引へ

ERRORLEVELの戻り値がうまく検査できない

678.
戻り値の値9009と0が返ってくるのですが。
2004年07月28日(水) 09時38分
JJ
こんにちは。
下記のバッチファイルb.batをa.batが呼んでいるのですが、存在しないプログラムを実行しておりまして、その戻り値なんですが9009と0が返っ てきている形になっているのですがこれは当たり前のことなんでしょうか?すいません。初心者なんで間違っているのか知りませんが、ご教授よろしくお願いし ます。又、比較演算子で’以外’をあらわすのは!=でいいのでしょうか?バッチで動かすと’! の使い方が誤っています。’と現れます。

b.batのバッチ内容です。

@echo off
echo 'start'
notepad99.exe   ←存在しないプログラムです。
echo ERRORLEVELの値は%ERRORLEVEL%
echo です。下のIF文では
IF ERRORLEVEL 9009 echo 値が9009
IF ERRORLEVEL 0 echo 値が0
IF ERRORLEVEL !=0 echo 値が0以外

結果以下です。(ログ出力内容です)
'start'
ERRORLEVELの値は9009
です。下のIF文では
値が9009     ←どちらともIFでTRUEということ
値が0       ←でしょうか
679.
Re:戻り値の値9009と0が返ってくるのですが。
2004年07月28日(水) 11時05分
YanaKen
JJさん こんにちは。

 最近よくほかの人と同タイミングでコメントがかぶったりするので、おそるおそる……(^^;。

>これは当たり前のことなんでしょうか?
 当たり前……というか、まあ「仕様通りの動作」です。
 バッチ処理の記述の方を修正する必要があります。

>IF ERRORLEVEL 9009 echo 値が9009
>IF ERRORLEVEL 0 echo 値が0
>IF ERRORLEVEL !=0 echo 値が0以外

・IF ERRORLEVEL n は「イコールnなら」ではなく「n以上なら」という意味、算式で言うなら、
  errorlevel > x
 をあらわします。
 ERRORLEVELは常に0以上の整数値ですから、
  if errorlevel 0
 は必ずTRUEになります。

・IF構文で「否定」をあらわす書式は、とりあえず IF NOT ... がありますが、「"以上"の否定ってことは、えーとつまり"未満"になるのかな、えーとえーと」みたいな感じで、この場合はちょっと使いにくい面があります。
 お使いのOSのバージョンが不明ですが、WindowsNT/2000/XP系であれば、下記の比較演算子を使うことができます。

 EQU - 等しい
 NEQ - 等しくない
 LSS - より小さい
 LEQ - 以下
 GTR - より大きい
 GEQ - 以上

利用例:if errorlevel EQU 3 echo FILE NOT FOUND
 →こう書けば、errorlevelが3のときだけに限定した処理が行えます。
比較例:if errorlevel 3 echo FILE NOT FOUND
 →演算子なしだと、errorlevelが3以上のときには常に処理されることになります。

YanaKen
680.
Re2:戻り値の値9009と0が返ってくるのですが。
2004年07月28日(水) 11時08分
YanaKen
 訂正。
>  errorlevel > x

  errorlevel ≧ x

 ですね(^^;。すみません。
681.
Re3:戻り値の値9009と0が返ってくるのですが。
2004年07月28日(水) 13時56分
JJ
ありがとうございました。てっきり=だと思い込んでおりました。すばやいレスたいへんありがとうございました。
 

 
 
 


カテゴリー「ERRORLEVEL」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2004年07月28日 11:15に投稿されたエントリーのページです。

ひとつ前の投稿は「各行の先頭2バイトをチェックしてデータを複数ファイルに振り分けたい」です。

次の投稿は「テキストエディタって?」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート