web-dev-qa-db-ja.com

バッチファイル内からサーバーに1回だけpingを実行する方法は?

バッチスクリプトの作成方法を学び、コマンドラインでこのコマンドを1回自動的に実行するスクリプトを作成しようとしました。

ping www.google.de -t

pingが表示されるため、次のようになります。

Reply from XXX.XXX.X.XX: time=30ms
Reply from XXX.XXX.X.XX: time=31ms
Reply from XXX.XXX.X.XX: time=29ms

私の問題は、このコマンドをスクリプトとして実行すると、この結果になることです:

Screenshot showing output on running the batch file.

私の問題は、pingコマンドをまったく実行せず、スクリーンショットに示すように、コンソールウィンドウにコマンドを無制限に挿入することです。

新しいファイルを作成し、ping www.google.de -tを書き込み、ping.batファイルとして保存し、ダブルクリックして実行しました。

では、このコマンドを1回だけ起動してpingの結果を表示するバッチファイルを記述する方法は?

10
Peter

コマンドプロンプトウィンドウping /?に入力し、Enterキーを押した後、短いヘルプ出力を読みます。または見てみましょう

  • Ping -Windows XP documentation
  • Ping -Microsoft TechNetの記事

Microsoftから提供されたオプション-tの説明:

指定されたホストを停止するまでpingします。統計を表示して続行するには、Control-Breakと入力します。停止するには、Control-Cを入力します。

あなたが使用することがあります:

@%SystemRoot%\system32\ping.exe -n 1 www.google.de

または、サーバーが使用可能かどうかを最初に確認するには:

@echo off
set MyServer=Server.MyDomain.de
%SystemRoot%\system32\ping.exe -n 1 %MyServer% >nul
if errorlevel 1 goto NoServer

echo %MyServer% is availabe.
rem Insert commands here, for example 1 or more Net Use to connect network drives.
goto :EOF

:NoServer
echo %MyServer% is not availabe yet.
pause
goto :EOF
16
Mofi

結果のbatファイルに「ping.bat」という名前を付けたに違いありません。ファイルの名前をpingXXX.batに変更した場合。それは間違いなく動作します。やってみて。

私のバッチファイルには以下のコードのみが含まれています

ping 172.31.29.1 -t

ファイル名がping.batの場合 enter image description here

ファイル名abc.bat

enter image description here

36

何をしようとしているのか正確にはわかりませんが、投稿したコードは問題なく動作するはずです。コマンドを表示したくない場合は、スクリプトの開始時に@echo offを追加してください。 test.batという名前のファイルに以下のコードがあり、それをtest.batとしてプロンプトコマンドを実行すると、正常に動作します。

@echo off
ping www.google.de -t

主な関心事であるEDIT:に対処するためにpingコマンドは認識できませんでした。 pingコマンドは通常、C:\Windows\System32\の下にあります。ここで、C:\はルートディレクトリです。ルートディレクトリが異なる場合、%SystemRoot%環境変数を使用してルートディレクトリを取得し、次のように言うことができます。

%SystemRoot%\Windows\System32\PING.EXE www.google.de -t

実行しようとしているコマンドが認識可能かどうかを確認する別の方法は、以下のようなWHEREコマンドを使用することです

where ping

コマンドが認識できる場合;次のようなパスを出力します

C:\Windows\System32\PING.EXE

それ以外の場合はエラーになります

4
Rahul

「ping.bat」という名前を使用する場合は、次のコードを使用するのが簡単です。

@echo off
cd\ 
ping google.com -t

「cd \」を追加するだけで問題ありません...;)

2
Phantom

ファイル名「ping」を使用し、コード「ping」を使用している理由を知っています。実際にpingを実行したい場合は、そのファイルが選択されたディレクトリにあるため、それ自体を実行しようとしますpingコマンドの前に:「cd C:\ Windows\system32」、サーバーをpingする実際のファイルはそこにあります!

2
JacobRocks12

Bash(OSX)ping google.com -c 1(ケース検索でここに来ました)

1
Ashley Coolman

バッチファイルから、次のコマンドを使用してipを1回だけpingします。
Ping 192.168.199.10 -n 1

enter image description here

1
A.Gopal Reddy

同じフォルダーにtest.batとping.batという2つのスクリプトがある:

スクリプトtest.batには1行が含まれています。

ping google.com

スクリプトping.batには以下の行が含まれています。

@echo off
echo Hello!
pause

「test.bat」を実行すると、CMDの結果は次のようになります。

Hello!
Press any key to continue . . .

どうして? 「test.bat」は「ping.bat」を呼び出しているためです(「ping google.com」は「ping.bat」スクリプトを呼び出していると解釈されます)。スクリプト「ping.bat」に「ping google.com」が含まれている場合も同様です。スクリプトはループで自分自身を実行します。

これを避ける簡単な方法:

  1. スクリプトに「ping.bat」という名前を付けないでください。
  2. スクリプトに「ping.bat」という名前を付けることができますが、スクリプト内では「ping google.com」ではなく「ping.exe google.com」を使用します。
0
DragosD

mofiサンプルを使用し、いくつかのパラメーターを変更します。

@%SystemRoot%\ system32\ping.exe -n -1 4.2.2.4

0
deadManN

二重引用符を付けずにコマンド「ping your server IP」を書くだけです。ファイル名をfilename.batとして保存してから、管理者としてバッチファイルを実行します

0
Mahfuze

この場合に考慮する必要があるのは、コンピューター上のどのディレクトリにあるかだけです。コマンドラインウィンドウには、現在のディレクトリとして_C:\users\rei0d\desktop\_と表示されます。

したがって、本当に必要なことは次のとおりです。
コマンド_cd .._を使用して「上に」移動し、desktopを削除します。

したがって、完全なコマンドは次のようになります。

_cd ..
ping XXX.XXX.XXX.XXX -t
_
0
Tor