• ベストアンサー

DOSコマンドについて

前回に引き続き問題発生です。 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.

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

  • ベストアンサー
noname#41381
noname#41381
回答No.5

echo %ERRORLEVEL% で表示されるのは環境変数"ERRORLEVEL"の値なのでは? あるプログラムの状態結果(if文のerrorlevel)は また違う値だと思います。 ということで、たぶん実際の結果(if errorlevel)は "1"になっていると思います。  =スクリプトは正常に動作している

RJBASE
質問者

補足

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

その他の回答 (6)

  • kob
  • ベストアンサー率0% (0/4)
回答No.7

質問に対する回答としては、先の回答者の方々の通りですよ。 実験もしてみました。 RJBASE さんは、1, 0 の逆順を、 コマンドラインの ECHO で試されたので、回答のように GOTO で分岐してないだけではないでしょうか。 ちなみに、No5 の回答に驚いて、テストしてみたら、環境変数でも ERRORLEVEL は定義できるんですね! でも、echo %errorlevel% では環境変数の値がでますが、 if errorlevel は、環境変数には影響されませんでしたよ。

RJBASE
質問者

お礼

御回答ありがとうございました。

  • shige1972
  • ベストアンサー率35% (20/56)
回答No.6

質問の意図がイマイチ掴めないのですが、 IF %ERRORLEVEL%==0 ECHO 00000 IF %ERRORLEVEL%==1 ECHO 11111 IF %ERRORLEVEL%==2 ECHO 22222 この方法で分岐させるっていう手は無しですか?

RJBASE
質問者

お礼

御回答ありがとうございました。

  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.4

やりたいことが明確にわからんのでなんとも言えないが・・・・ 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
質問者

補足

御回答ありがとうございます。 この場合でもERRORLEVELが1でも0でもCASE1にGOTOしちゃいます。 XCOPYとかでエラーでているんですけど・・・copyとか色々ためしたんですが

noname#41381
noname#41381
回答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
質問者

補足

御回答ありがとうございます。 上記の場合、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 ------------------------------

noname#41381
noname#41381
回答No.2

遠い昔の記憶ですが... ErrorLevelの判定はたしか判定結果以下のもの全てにヒットだったと思います。 ですので、ErrorLevelが"1"の場合、"1"と"0"にヒットするって感じで。 ということで、ErrlrLevel判定を行うには、 IF ERRORLEVEL 2 ECHO 22222 IF ERRORLEVEL 1 ECHO 1111 IF ERRORLEVEL 0 ECHO 0000 と記述すればいいと思います。 ちょっと質問の意図と外れていたらすみません。

RJBASE
質問者

補足

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

回答No.1

こんばんわぁ、Blackwinglsです。 いまいち、おっしゃりたい事が理解できていませんが、 環境変数ERRORLEVELが1の時のみ、ECHO 1111 させたいって事でしょうか? だとすると以下のようにすればOKだと思うのですが・・・・ IF "%ERRORLEVEL%" == "0" ECHO 00000 IF "%ERRORLEVEL%" == "1" ECHO 11111 IF "%ERRORLEVEL%" == "2" ECHO 22222 外してたらごめんなさい(^^;) では(^.^)/~~~

RJBASE
質問者

補足

回答ありがとうございます。 しかしながら上記の場合は0でも1でも IF "%ERRORLEVEL%" == "1" ECHO 11111 を通ります。なぜでしょうか?

関連するQ&A

  • コマンドプロンプトでcommand( .com)と打ち込むと・・・

    WindowsXP HomeEditionにあるコマンドプロンプト上で、command(.com)と打ち込むと 下↓のように Microsoft (R) KKCFUNC バージョン 1.10 Copyright (C) Microsoft Corp. 1991,1993. All rights reserved. KKCFUNC が組み込まれました. マイクロソフトかな漢字変換 バージョン 2.51 (C)Copyright Microsoft Corp. 1992-1993 Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001. C:\DOCUME~1\VAIO> というような表示が出ます。 「KKCFUNC が組み込まれました.」ってありますが、何かまずいことでもしてしまったのでしょうか? 何かの役に立ちますでしょうか? ご存知のかた、どうぞよろしくお願い致しますm(__)m

  • コマンドプロンプトで謎の出力

    コマンドプロンプトで[command]と入力したところ、以下のような出力がなされました。あわてて『command』の意味を調べましたが、”Windows コマンド インタープリタを新たに起動”するとの事で、こんな出力が起きていいのか謎です。これはどのようなことが起きたのでしょう? Microsoft (R) KKCFUNC バージョン 1.10 Copyright (C) Microsoft Corp. 1991,1993. All rights reserved. KKCFUNC が組み込まれました. マイクロソフトかな漢字変換 バージョン 2.51 (C)Copyright Microsoft Corp. 1992-1993 Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001.

  • コマンドプロンプトで何故パラメータのフォーマットが違うのでしょう?

    コマンドプロンプトでディレクトリの移動のためにcd の後にパスを ””でくくっていますが、 何故パラメータのフォーマットが違うのでしょう? ””でくくっているのに問題があるのでしょうか? 移動するためにはどうすればいいのでしょう? どうか、教えてください。 Microsoft (R) KKCFUNC バージョン 1.10 Copyright (C) Microsoft Corp. 1991,1993. All rights reserved. KKCFUNC が組み込まれました. マイクロソフトかな漢字変換 バージョン 2.51 (C)Copyright Microsoft Corp. 1992-1993 Microsoft(R) Windows DOS (C)Copyright Microsoft Corp 1990-2001. C:\DOCUME~1\和田>cd "C:\Documents and Settings" パラメータのフォーマットが違います. - "C:\Documents C:\DOCUME~1\和田>

  • 何故かDOSの画面に

    すみません質問させて下さい。 機種はIBMのThinkad T21なのですが、 (OSはWIN98seです) 起動する際に何故かDOSの画面になり、起動 出来なくなってしまいました。 Windows 98 is now starting your MS-DOS-based program. Microsoft(R)Windows 98 (C)Copyright Microsoft Corp 1981-1999. C:\WINDOWS> で、何かしら打ち込む事は出来るのですが、 (コマンドまたはファイル名が違います。) というメッセージが表示されて先に進めません。 OSのガイドやリファレンスガイド、 オンラインヘルプ等見てみたのですが、同様の 現象についてのものが見つけられませんでした。 10分前までは正常に作動していて、特に異常終了 やショックを加えたという訳でも無いのですが、 ウィルスの可能性などもあるのでしょうか。 お知恵を貸してください。 宜しくお願いします。

  • PCを起動のたび「KKCFUNC が組み込まれました ~」と出ます。

    何故かPCを起動のたびに Microsoft (R) KKCFUNC バージョン 1.10 Copyright (C) Microsoft Corp. 1991,1993. All rights reserved. KKCFUNC が組み込まれました. マイクロソフトかな漢字変換 バージョン 2.51 (C)Copyright Microsoft Corp. 1992-1993  というコマンドプロンプト出ます。 どうすれば出なくなるんでしょう? たいへん困ってます誰か教えてください。お願いします。

  • KKCFUNK?のエラーのようなものが出て困ってます。

    PCを使っていると、いきなりDOSの画面のようなものが出て、 Microsoft(R)KKCFUNC バージョン1.10 Copyright(C)Microsoft Corp.1991,1993.All right reserved. KKCFUNK が組み込まれました. マイクロソフトかな漢字変換 バージョン2.51 (c)Copyright Microsoft Corp. 1992-1993 VDM IPX/SPXサポートを読み込めません と表示されます。それと同時にプリンタの電源が入ります。 ほっておくと複数同時に表示されることもあります。 閉じても特に動作に不都合は無いのですが、なんとかなりますでしょうか? PC環境は winXP pro Ver.2002 ServicePack1 最近フレッツ光でネットに接続しました。

  • PCを起動のたび「KKCFUNC が組み込まれました ~」と出ます。

    何故かPCを起動のたびに Microsoft (R) KKCFUNC バージョン 1.10 Copyright (C) Microsoft Corp. 1991,1993. All rights reserved. KKCFUNC が組み込まれました. マイクロソフトかな漢字変換 バージョン 2.51 (C)Copyright Microsoft Corp. 1992-1993  というコマンドプロンプト出ます。 ちなみにOSはXPです。 どうすれば出なくなるんでしょう? たいへん困ってます誰か教えてください。お願いします。

  • Cで、呼び元のDOSバッチを終了させたい

    DOSのバッチからexeを呼んで、そのexe内で呼び元であるバッチファイルの呼んだ行以降に行かないようにしたいのですが出来るでしょうか? バッチでerrorlevel拾って判断して終わらせる(EXIT? )のではなく、EXE内でDOS窓を閉じたいのです。 C++で書いてます。 どなたかわかる方知恵をお願いいたします。 出来ないというのでもかまいませんが・・

  • DOSコマンドで時刻判断を行いたい。

    質問です。 DOSコマンドで、現在の時刻が 7:00 以前か以後かを判断し、処理を切り分けたいのですが、上手くいきません。 if 7:00:00.00 GTR %TIME% (echo a) else (echo b) このようなコードを書いています。 7:00 以前は、「a」 が出ます。7~9時までは「b」が出ます。 10時~23時までは「a」が出ますが、ここは「b」が出て欲しいです。 ただ単に時間の桁数がWindows のTIMEコマンドの使用で、9時以前は1桁でそれ以後は2桁かの違いだとはわかっているんですが、 どうやって回避したらよろしいんでしょうか?

  • DOS BASIC の起動 について 教えてください

    DOS BASIC の起動 について 教えてください 東芝 J3100で DOSの時代に 使用していた BASICソフトを起動するため Windows XP の コマンドプロンプトで 起動すると 以下のように うまくいくのですが -------------------------------- >basic Advanced BASIC-86 Version 3.21.22JS (C) TOSHIBA Corp. 1986-1990 (C) Microsoft 1983,1986 61315 Bytes free ================================ 本来の DOV6.2 をセットアップして >BASIC と コマンドを 入れると  画面が くずれて 全く 反応がありません ディスプレイは CRTを 使用しております できれば DOS6.2で 使用したいので アドバイスがあれば お願いします