-PR-
解決済み

DOSコマンドについて

  • すぐに回答を!
  • 質問No.61806
  • 閲覧数198
  • ありがとう数4
  • 気になる数0
  • 回答数7
  • コメント数0

お礼率 84% (50/59)

前回に引き続き問題発生です。
EROORLEVELが分岐しません。何故でしょう?(下例)
------------------------------------------
C:\>ECHO %ERRORLEVEL%
1
C:\>IF ERRORLEVEL 0 ECHO 0000
0000
C:\>IF ERRORLEVEL 1 ECHO 1111
1111
C:\>IF ERRORLEVEL 2 ECHO 22222
C:\>
------------------------------------------
2は判断できているみたいなんですが0と1ではどちらもECHOしています。
ちなみに2・1・0のならびに変えても同じ様な結果です。
いろいろ調べてみたんですがわかりません。どなたか御教示ねがいます。
Microsoft(R) Windows NT DOS
(C)Copyright Microsoft Corp 1990-1996.
通報する
  • 回答数7
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5

echo %ERRORLEVEL% で表示されるのは環境変数"ERRORLEVEL"の値なのでは?
あるプログラムの状態結果(if文のerrorlevel)は
また違う値だと思います。

ということで、たぶん実際の結果(if errorlevel)は
"1"になっていると思います。
 =スクリプトは正常に動作している
補足コメント
RJBASE

お礼率 84% (50/59)

御回答ありがとうございます。
SETで確認したんですが、ERRORLEVELは無いみたいですが???
(何か勘違いしてますか私?)
ログオンスクリプトでNET USEやXCOPY等のエラーを返したいんですが
エラーでも(1でも0でも)決まったGOTOしか飛ばないんですよ。
そもそもERRORLEVELはすべてのエラーを返しているんでしょうか?
投稿日時 - 2001-04-10 20:22:19
-PR-
-PR-

その他の回答 (全6件)

  • 回答No.2

遠い昔の記憶ですが...

ErrorLevelの判定はたしか判定結果以下のもの全てにヒットだったと思います。
ですので、ErrorLevelが"1"の場合、"1"と"0"にヒットするって感じで。

ということで、ErrlrLevel判定を行うには、
IF ERRORLEVEL 2 ECHO 22222
IF ERRORLEVEL 1 ECHO 1111
IF ERRORLEVEL 0 ECHO 0000
と記述すればいいと思います。

ちょっと質問の意図と外れていたらすみません。
補足コメント
RJBASE

お礼率 84% (50/59)

御回答ありがとうございます。
しかしながら2・1・0でも0・1・2でも0・1でも1・0でも分岐しません。
間にECHO %ERRORLEVEL%を挿入し確認しているのですが・・・
上記の場合、1でも0でもIF ERRORLEVEL 1 ECHO 1111
に行っちゃいます。まいった。
投稿日時 - 2001-04-10 12:41:29


  • 回答No.1
レベル11

ベストアンサー率 44% (138/313)

こんばんわぁ、Blackwinglsです。

いまいち、おっしゃりたい事が理解できていませんが、
環境変数ERRORLEVELが1の時のみ、ECHO 1111 させたいって事でしょうか?
だとすると以下のようにすればOKだと思うのですが・・・・

IF "%ERRORLEVEL%" == "0" ECHO 00000
IF "%ERRORLEVEL%" == "1" ECHO 11111
IF "%ERRORLEVEL%" == "2" ECHO 22222

外してたらごめんなさい(^^;)

では(^.^)/~~~
補足コメント
RJBASE

お礼率 84% (50/59)

回答ありがとうございます。
しかしながら上記の場合は0でも1でも
IF "%ERRORLEVEL%" == "1" ECHO 11111
を通ります。なぜでしょうか?
投稿日時 - 2001-04-10 08:58:57
  • 回答No.3

回答#2の補足です。
正確な判定出力を期待するなら以下のような感じになるかな?
(きたないスクリプトですが...^ ^;)
------------------------------
IF ERRORLEVEL 2 GOTO ECHO-2
IF ERRORLEVEL 1 GOTO ECHO-1
IF ERRORLEVEL 0 GOTO ECHO-0

:ECHO-2
ECHO 22222
GOTO END

:ECHO-1
ECHO 1111
GOTO END

:ECHO-0
ECHO 0000
GOTO END

:END
------------------------------
補足コメント
RJBASE

お礼率 84% (50/59)

御回答ありがとうございます。
上記の場合、1でも0でもIF ERRORLEVEL 1 GOTO ECHO-1
に行っちゃいます。

ECHO %ERRORLEVEL% ---------------この時1でも0でもGOTO ECHO-1にかかる
IF ERRORLEVEL 2 GOTO ECHO-2
IF ERRORLEVEL 1 GOTO ECHO-1
IF ERRORLEVEL 0 GOTO ECHO-0

:ECHO-2
ECHO 22222
GOTO END

:ECHO-1
ECHO 1111
GOTO END

:ECHO-0
ECHO 0000
GOTO END

:END
------------------------------
投稿日時 - 2001-04-10 12:46:12
  • 回答No.4
レベル11

ベストアンサー率 61% (157/255)

やりたいことが明確にわからんのでなんとも言えないが・・・・

FOR %%P IN (0 1 2) DO IF ERRORLEVEL %%P GOTO CASE%P

:CASE0
ECHO 0000
GOTO END

:CASE1
ECHO 1111
GOTO END

:CASE2
ECHO 22222
GOTO END

:END

並列分岐の常套手法。
補足コメント
RJBASE

お礼率 84% (50/59)

御回答ありがとうございます。
この場合でもERRORLEVELが1でも0でもCASE1にGOTOしちゃいます。
XCOPYとかでエラーでているんですけど・・・copyとか色々ためしたんですが
投稿日時 - 2001-04-10 20:09:36
  • 回答No.6
レベル9

ベストアンサー率 35% (20/56)

質問の意図がイマイチ掴めないのですが、

IF %ERRORLEVEL%==0 ECHO 00000
IF %ERRORLEVEL%==1 ECHO 11111
IF %ERRORLEVEL%==2 ECHO 22222

この方法で分岐させるっていう手は無しですか?
お礼コメント
RJBASE

お礼率 84% (50/59)

御回答ありがとうございました。
投稿日時 - 2001-04-11 12:38:47
  • 回答No.7
レベル8

ベストアンサー率 0% (0/4)

質問に対する回答としては、先の回答者の方々の通りですよ。
実験もしてみました。
RJBASE さんは、1, 0 の逆順を、
コマンドラインの ECHO で試されたので、回答のように
GOTO で分岐してないだけではないでしょうか。

ちなみに、No5 の回答に驚いて、テストしてみたら、環境変数でも ERRORLEVEL
は定義できるんですね!
でも、echo %errorlevel% では環境変数の値がでますが、
if errorlevel は、環境変数には影響されませんでしたよ。
お礼コメント
RJBASE

お礼率 84% (50/59)

御回答ありがとうございました。
投稿日時 - 2001-04-11 12:39:37
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ