次の行を持つ.BATファイルをWindows7で作成しました。
PING XXX.XXX.XXX.XXX -t
(XXXは実際のIP番号を置き換えます)。ただし、このバッチファイルをダブルクリックすると、pingコマンドがループで繰り返し実行されているのがわかります。 ping.BAT
の名前をping.CMD
に変更しようとしましたが、結果は同じです。
コマンドプロンプトを使用してpingコマンドを記述したくないので、バッチファイルを作成しました。同じステートメントがバッチファイルに入れられたときに、なぜpingコマンドが継続的に呼び出されるのかわかりません。
嫌いなものの出力やスクリーンショットを提供していないので、直面している問題が正確に何であるかは少しわかりませんが、私が目にする最も可能性の高い2つの問題について説明します。
スクリプトがping.bat
と呼ばれ、次のようになっているとします。
ping example.com
次に、インタプリタ(cmd.exe
)は、環境変数%PATH%
内のパスを検索/プローブして、ping
...のように見えるものを探します。これは、%PATHEXT%
のようなものを含む.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
の各サフィックスを追加することによって行います。したがって、ping.bat
leadsからping.com
ping.exe
ping.bat
などを検索するためにping
を呼び出すだけです。インタプリタは現在の作業ディレクトリ(ping.bat
)でping.bat
を見つけて呼び出します。
だから、あなたは素晴らしい 再帰 ここにあります:ping.cmdは最初の行を実行し、「ping」を検索し、「ping.cmd」を見つけ、最初の行を実行し、「ping」を検索し、 「ping.cmd」は、最初の行を実行し、「ping」を検索し、「ping.cmd」を見つけます...
あなたが持っているかもしれない2番目の問題はこれです:
バッチファイルのインタプリタは通常、.bat /.cmdファイルに書き込んだコマンドを繰り返します。したがって、このping www.superuser.com
のようなものは次のようになります。
C:\Users\XYZ\Desktop>ping www.superuser.com
Ping wird ausgeführt für superuser.com [64.34.119.12] mit 32 Bytes Daten:
Antwort von 64.34.119.12: Bytes=32 Zeit=110ms TTL=46
Antwort von 64.34.119.12: Bytes=32 Zeit=107ms TTL=46
スクリプトの出力でC:\Users\XYZ\Desktop>ping www.superuser.com
を削除する場合は、スクリプトの各行の前に@
(たとえば、 '@ ping www.superuser.com')を付けるか、の束の前に@echo off
を配置する必要があります。 「静かに」実行したいコマンドライン。
TL; DR;既存のプログラムと同じようにbatファイルを呼び出さないでください。
私も同じ問題を抱えていました、
ping.batには数行のpingコマンドが含まれていました
ping Host1
ping Host2
ping Host3
...
cmd Shellの出力は次のようになり、次のようにブレークするまでループを繰り返し続けました ctrl+C
c:\ping Host1
c:\ping Host1
c:\ping Host1
c:\ping Host1
c:\ping Host1
...
c:\ping Host1
^CTerminate batch job (Y/N)?
それを解決するには、ping.bat
の名前を変更するだけで、バッチファイルで自分自身を呼び出さないか、バッチファイルのコマンドとしてping.exeを使用します。
ping.exe Host1
ping.exe Host2
ping.exe Host3
...
-tパラメーターは、pingを継続的に行います。
たぶん、-tパラメータを削除してから、cmd画面を強制終了する前にEnterキーを押すのを待つようにバッチスクリプトに指示します。
しばらくウィンドウを使用していませんが、これは機能するはずです。
ping xxx.xxx.xxx.xxx
pause
exit
私も同じ問題を抱えていました。解決策は次のとおりです。
Ping.batファイルの名前をpingtest.batに変更します
そして、それが含まれていることを確認してください:
ping xxx.xxx.xxx.001
ping xxx.xxx.xxx.002
ping xxx.xxx.xxx.003
一時停止
これにより、1つまたは複数のアドレスにpingを実行でき、結果が画面に表示されます。このバッチファイルは、ダブルクリックすることでPCのどこからでも実行できます。
右クリック-Run As Administratorが私のために働いた。
ローカルスクリプトの実行により、スクリプトでping.exeが実行されないようです。右クリックして、「管理者として実行」してみてください。実行ポリシーを更新する方法を探しています。
私がWindowsについて何か知っていると思ったとき、彼らはそれを変えました。
更新:再帰が答えです...
Ping.batと呼んでping.exeを呼び出すことはできません
また、route.batと呼んだりroute.exeと呼んだりすることもできません。
たとえば、ping.batを実行したら、pingx.batとして再度実行します。