• ベストアンサー

PING一斉送信(Win98で)

Windows98上でPINGを一斉送信するバッチを作成しています。 いろいろなサイトを見て、手元のXPで以下のバッチを作成し実行するとうまく動作しました。しかし98上で動かしてみたところ、なぜか無限ループになってしまいました。 ----------------------------------------------- @cls @echo PCの応答を調べます。 @ping -n 1 -l 8 192.168.11.5>address.txt @find /c "Request timed out." address.txt>nul @if errorlevel 1 goto A1 @if errorlevel 0 goto A0 @goto END @:A1 @echo 自分のPC:OK @goto END @:A0 @echo 自分のPC:NG @:END @pause (あとはこれは端末の分だけコピペする) ------------------------------------------------ どのようにすれば98上で動くか教えていただくと助かります。よろしくお願いします。

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

  • ベストアンサー
  • mii-japan
  • ベストアンサー率30% (874/2820)
回答No.7

#4です ラベルにブランクを入れているせいです ブランクは区切り文字として扱われます (昔 ブランク入りのファイル名で登録され、全くアクセスできず、削除もできず苦労したことを思い出しました) END 1と END 2 は 両方とも END で処理されるはずです 他のラベルも同様 最初にコピペと省略しないで、きちんと書けば 一回で解決したと思います 以後の参考にしてください

kaga2063
質問者

お礼

出来ました。ありがとうございました。 質問の仕方は以後気を付けます・・・。

その他の回答 (6)

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.6

#1です。 同じラベルを使いまわしてるせいだと思います。 2回目の処理でA1またはA0というラベルは1回目の処理でも使ってるのでそっちに飛んでるだけだと思います。 各処理ラベル名を変更すれば問題ないかと。 たとえば1回目のラベルを A1_0 と A1_1、2回目のラベルを A2_0 と A2_1 ってしたり。

kaga2063
質問者

お礼

ありがとうございました。 参考にしてなんとか出来ました。

  • ZENO888
  • ベストアンサー率49% (8944/18242)
回答No.5

>複数のグループがあるため ExPingはレジストリを使わずに、設定ファイルでホスト等の設定も記録してるので、異なるフォルダに複数インストールして、起動すれば各フォルダ単位でグループ分け出来ますけど。(複数同時起動も可能)

  • mii-japan
  • ベストアンサー率30% (874/2820)
回答No.4

>(あとはこれは端末の分だけコピペする) #3までの回答で修正したものを少なくとも2端末分コピーしたものを書いてください if errorlevel 1 goto A1 if errorlevel 0 goto A0 goto END :A1  ********** echo 自分のPC:OK goto END :A0  ********** echo 自分のPC:NG :END ********** *****部のラベルとgotoの飛び先が予想外のところになっているのだと(ENDが最後ではなく、第一端末の処理部になっているとか)

kaga2063
質問者

お礼

以下のように修正しました。 ------------------------------------------------ @cls @echo off echo PCの応答を調べます。 ping -n 1 -l 8 192.168.11.5>address.txt find /c "Request timed out" address.txt>nul if errorlevel 1 goto A1 if errorlevel 0 goto A0 goto END 1 :A1 echo 自分のPC:OK goto END 1 :A0 echo 自分のPC:NG :END 1 ping -n 1 -l 8 192.168.12.5>address.txt find /c "Request timed out" address.txt>nul if errorlevel 1 goto A1 if errorlevel 0 goto A0 goto END 2 :A1 echo 自分のPC:OK goto END 2 :A0 echo 自分のPC:NG :END 2 pause ---------------------------------

  • ZENO888
  • ベストアンサー率49% (8944/18242)
回答No.3

直接の回答じゃないけど、下記のようなソフトを使うのはダメ? ExPing http://www.woodybells.com/exping.html

kaga2063
質問者

お礼

このソフトも検討したんですが、複数のグループがあるため、出来ればバッチがいいんですが・・・。

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

無限ループで実行し続けている行(コマンド)は、どれですか。それをまず教えてください。 それが分かれば、その中にあるコマンドを実行し続けている原因を調べることができます。

kaga2063
質問者

お礼

下記の通りです。お手数ですがよろしくお願いします。

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.1

全然回答とは違うのですが、全部の行の先頭に@マークを書くよりも、一番最初に @echo off としたほうが楽だし、見やすいですよ。 無限ループになるというのは、冒頭から繰り返してしまうということでしょうか?

kaga2063
質問者

お礼

ありがとうございます。 @echo off にしました。これすら知りませんでした・・・。こっちの方が断然見やすいですね。 無限ループについての詳しい説明が抜けていました。 単独ですと起きないのですが、同じ処理を2度続けると2度目の部分が無限ループし、延々とPINGを飛ばして、答えを出して・・・を繰り返します。 goto文が関係していると思い、goto文の後の名前を変えてみたのですが駄目でした。

関連するQ&A

専門家に質問してみよう