• ベストアンサー

バッチファイル 値を比較してメッセージを出力したい

forコマンドで取得したレジストリの値と比較して、同じでなければ「違います」のメッセージを出して、処理を中断したい。 ●試したコマンド: for /f "skip=4 tokens=2*" %%A in ('reg query %REGNAME% /v VVV') if not "%%B"=="1.1.1.1" echo "違います" ●求める結果: あるレジストリ値VVV のデータが1.1.1.1 でなかった場合に「違います」のメッセージを出したい 単にforコマンドとif分岐なのかもしれませんが、うまくいきません。 宜しくお願いいたします。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4902/10363)
回答No.3

ifが真の場合はgotoしますので、elseは不要です。elseの無いifが偽の場合は次の行が実行されます。 for /f "skip=4 tokens=2*" %%A in ('reg query %REGNAME% /v VVV') do if not "%%B"=="1.1.1.1" echo "違います"&pause&goto :END echo "合っています。"&pause :END elseを使うとすると、ifと同一行に書く必要があります。 for /f "skip=4 tokens=2*" %%A in ('reg query %REGNAME% /v VVV') do if not "%%B"=="1.1.1.1" (echo "違います")else(echo "合っています。") pause

indigo45kk
質問者

お礼

大変、参考になりました。助かりました。ありがとうございます!!

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4902/10363)
回答No.2

>表示しない方法 実行するコマンドが表示されるのを消したいと言うことなら、バッチファイルの先頭に @echo off と書けば、コマンドの実行結果しか表示されなくなります。 >また、「違います」の場合は、pauseでとめて:END する for /f "skip=4 tokens=2*" %%A in ('reg query %REGNAME% /v VVV') do if not "%%B"=="1.1.1.1" echo "違います"&pause&goto :END

indigo45kk
質問者

補足

ありがとうございます。大変参考になりました。更に質問なのですが、 比較した結果、合っていた場合、次の処理に移りたいのですが、elseを設定しても思うように動きません。 構文が間違えているのでしょうか? ●試したコマンド:教えていいただいたコマンド for /f "skip=4 tokens=2*" %%A in ('reg query %REGNAME% /v VVV') do if not "%%B"=="1.1.1.1" echo "違います"&pause&goto :END else goto A :A echo "合っています。""&pause&goto :END :END ●求める結果: あるレジストリ値VVV のデータが1.1.1.1 の場合に「合っています」のメッセージを出す

すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4902/10363)
回答No.1

do が抜けてますが、タイプミスでしょうか? for /f "skip=4 tokens=2*" %%A in ('reg query %REGNAME% /v VVV') do if not "%%B"=="1.1.1.1" echo "違います" でうまくいかないのであれば、 for /f "skip=4 tokens=2*" %%A in ('reg query %REGNAME% /v VVV') do echo "A=(%%A) B=(%%B)" とでも実行して%%Bがどうなっているかみてください。

indigo45kk
質問者

補足

ありがとうございます。教えていただいた記述で「違います」のメッセージを確認できました。しかし「違います」以外のコマンドもプロンプトウィンドウに表示されて、わかりにくいです。表示しない方法(clsでは「違います」まで消えてしまう)はないでしょうか?また、「違います」の場合は、pauseでとめて:END する 「違います」出ない場合は別処理げgoto する方法はないでしょうか?宜しくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A