[前の記事]« [Win2000]tlistの復帰値が取得できない
[次の記事]WindowsNT:ファイルの内容を読み取って、バッチファイルに引数で渡したい »

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

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

[WinMe]ERRORLEVELがうまく取得できない

257) WinMEでERRORLEVELが返らない K.OOTSUKI 2003/05/25(日) 10:20


K.OOTSUKIと申します。
初めて質問させていただきます。

WindowsMEとWindows2000でバッチファイルを作っています。以下のようなテストを行うとWindows2000だと ERRORLEVELは0なり1なり変化していきますが、WindowsMEだとERRORLEVELは空白(NULL)のまま変化しません。 ERRORLEVELの値でコマンドの成功不成功を判断したいのですが、こういう仕様なのでしょうか?ヘルプとかHPを検索しましたがはっきりしません。 よろしくお願いします。

echo on
echo errorlevel=%errorlevel%
echo aaaaaaa >file.txt
echo errorlevel=%errorlevel%
copy file.txt file2.txt
echo errorlevel=%errorlevel%
del file.txt
echo errorlevel=%errorlevel%
copy file.txt file2.txt
echo errorlevel=%errorlevel%
pause



258) Re:WinMEでERRORLEVELが返らない Hellcat 2003/05/25(日) 13:59


>WindowsMEとWindows2000でバッチファイルを 作っています。以下のようなテストを行うとWindows2000だとERRORLEVELは0なり1なり変化していきますが、WindowsMEだと ERRORLEVELは空白(NULL)のまま変化しません。

WinMEでは、環境変数"ERRORLEVEL"にリターンコードを自動的にセットするという機能はないと思います。
リターンコードを環境変数にセットしたい場合は、自ら行うしかありません。

リターンコードを環境変数にセットする方法として、
 BU (BATUTY)コマンド(フリーソフト)があります。

使い方
bu -nERRORLEVEL dsperrorlevel

これを実行すると、直前に実行したコマンドのリターンコードが環境変数"ERRORLEVEL"にセットされます(-n以下に任意の環境変数名称を指定できる)。

BU (BATUTY)は、以下にあります。
http://www.vector.co.jp/soft/dos/util/se023753.html

確認OS WindowsME ver 4.90.3000

this article refers Vector Soft Library..

260) Re2:WinMEでERRORLEVELが返らない K.OOTSUKI 2003/05/25(日) 14:34


Hellcatさん、回答ありがとうございました。
ダウンロードしてみました。
いろいろなツールがあるもんですね。
ちょっと使い方考えてみます。
これからもよろしくお願いします。

259) Re:WinMEでERRORLEVELが返らない YanaKen 2003/05/25(日) 14:23


K.OOTSUKIさん、こんにちは。

>WindowsMEとWindows2000でバッチファイルを作っています。以下のようなテストを行うとWindows2000だと ERRORLEVELは0なり1なり変化していきますが、WindowsMEだとERRORLEVELは空白(NULL)のまま変化しません。 ERRORLEVELの値でコマンドの成功不成功を判断したいのですが、こういう仕様なのでしょうか?ヘルプとかHPを検索しましたがはっきりしません。 よろしくお願いします。
(中略)
>echo errorlevel=%errorlevel%
(後略)

 ERRORLEVELの基本的な使い方については、下記を参照されることをおすすめします。
 ここに書いてあるやりかたで使うぶんには、DOS/Windows95/98/Me/NT/2000/XPどれでも同じように動作します。

 http://fpcu.on.coocan.jp/dosvcmd/batch.htm#if

※本来、ERRORLEVELは「環境変数」とは異なる種類のシステム変数です。たぶんそのへんで混乱されているのだと思います。
 K.OOTSUKIさんがご自分の作例として挙げてらっしゃる手順は、「環境変数としてのERRORLEVEL」を参照する手法になっていますが、 ERRORLEVELの数値が自動的に環境変数にもセットされるのはNT系の拡張機能ですから、その部分はMeでは使えません。
 ただ、DOS/Windows95系でも、自力で次のような処理をバッチファイルに加えれることで、似たような処理も(論理的には)可能ではあります。

:CHKERR.BAT
@ECHO OFF
SET ERRORLEVEL=0です。
%1 %2 %3 %4 %5
IF ERRORLEVEL 1 SET ERRORLEVEL=1です。
IF ERRORLEVEL 2 SET ERRORLEVEL=2です。
IF ERRORLEVEL 3 SET ERRORLEVEL=3です。
IF ERRORLEVEL 4 SET ERRORLEVEL=4です。
IF ERRORLEVEL 5 SET ERRORLEVEL=5以上でした。
ECHO 返ってきたERRORLEVELは %ERRORLEVEL%。

↑の使用例
CHKERR DIR *.X

YanaKen

[個人homepage] [@pay導入について] [YanaKenの@pay窓口]



261) Re2:WinMEでERRORLEVELが返らない K.OOTSUKI 2003/05/25(日) 15:20


YanaKenさん、回答ありがとうございました。

ERRORLEVELは環境変数ではないようですね。
WinMEではcopyコマンド後はERRORLEVELを見れないようです。
Yanakenさんの例題もピンとは来ないので実験してみます。
これからもよろしくお願いします。

262) Re2:WinMEでERRORLEVELが返らない ふぇむ 2003/05/25(日) 23:09


Yanakenさま

>IF ERRORLEVEL 1 SET ERRORLEVEL=1です。
>IF ERRORLEVEL 2 SET ERRORLEVEL=2です。
>IF ERRORLEVEL 3 SET ERRORLEVEL=3です。
>IF ERRORLEVEL 4 SET ERRORLEVEL=4です。
>IF ERRORLEVEL 5 SET ERRORLEVEL=5以上でした。

IF ERRORLEVEL の判定は「以上」で判断されるのではありませんでしたっけ。上記は順序を逆にしないと意図したようには動かないんじゃなかったでしょうか。

263) Re3:WinMEでERRORLEVELが返らない YanaKen 2003/05/26(月) 08:25


ふぇむさん こんにちは~。いつもどうもです。

>>IF ERRORLEVEL 1 SET ERRORLEVEL=1です。
>>IF ERRORLEVEL 2 SET ERRORLEVEL=2です。
>>IF ERRORLEVEL 3 SET ERRORLEVEL=3です。
>>IF ERRORLEVEL 4 SET ERRORLEVEL=4です。
>>IF ERRORLEVEL 5 SET ERRORLEVEL=5以上でした。

>IF ERRORLEVEL の判定は「以上」で判断されるのではありませんでしたっけ。上記は順序を逆にしないと意図したようには動かないんじゃなかったでしょうか。

 いえいえ、この場合は(IF ERRORLEVELが「以上」で成立するからこそ)この順序が必要です。実はぼくも、あとで気づいて直した結果がこのサンプルなわけで(^^;。

 実際にこれを逆順にして処理の流れを追うと、

>>IF ERRORLEVEL 5 SET ERRORLEVEL=5以上でした。
 この行はERRORLEVEL 5以上のときだけ実行されます。

>>IF ERRORLEVEL 4 SET ERRORLEVEL=4です。
 この行はERRORLEVEL 4以上のとき実行されます。(したがってERRORLEVEL 5以上のときも 環境変数には"4"が設定されます)

(中略)

>>IF ERRORLEVEL 1 SET ERRORLEVEL=1です。
 この行はERRORLEVEL 1以上のとき常に実行されますから、実際のERRORLEVELが2でも3でも5でも環境変数には「1です。」が設定されてしまい、上のほうの行はムダになります(^^;。

YanaKen

[個人homepage] [@pay導入について] [YanaKenの@pay窓口]


264) Re4:WinMEでERRORLEVELが返らない ふぇむ 2003/05/27(火) 00:15


> いえいえ、この場合は(IF ERRORLEVELが「以上」で成立するからこそ)この順序が必要です。実はぼくも、あとで気づいて直した結果がこのサンプルなわけで(^^;。

あ、そうですね。GOTO で逃がしているわけじゃないのか...。
このパターンを見て、マッチしたらGOTOでとばすケースが暗黙に脳裏に浮かんでしまいました。なんとなく一見しただけで判断してしまってよくみてませんでした。ごめんなさい。
 
 


カテゴリー「ERRORLEVEL」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

2003年05月25日 15:34に投稿されたエントリーのページです。

ひとつ前の投稿は「[Win2000]tlistの復帰値が取得できない」です。

次の投稿は「WindowsNT:ファイルの内容を読み取って、バッチファイルに引数で渡したい」です。

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

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