バッチスクリプトの作成方法を学び、コマンドラインでこのコマンドを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
私の問題は、このコマンドをスクリプトとして実行すると、この結果になることです:
私の問題は、pingコマンドをまったく実行せず、スクリーンショットに示すように、コンソールウィンドウにコマンドを無制限に挿入することです。
新しいファイルを作成し、ping www.google.de -t
を書き込み、ping.bat
ファイルとして保存し、ダブルクリックして実行しました。
では、このコマンドを1回だけ起動してpingの結果を表示するバッチファイルを記述する方法は?
コマンドプロンプトウィンドウping /?
に入力し、Enterキーを押した後、短いヘルプ出力を読みます。または見てみましょう
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
結果のbatファイルに「ping.bat」という名前を付けたに違いありません。ファイルの名前をpingXXX.batに変更した場合。それは間違いなく動作します。やってみて。
私のバッチファイルには以下のコードのみが含まれています
ping 172.31.29.1 -t
ファイル名がping.batの場合
ファイル名abc.bat
何をしようとしているのか正確にはわかりませんが、投稿したコードは問題なく動作するはずです。コマンドを表示したくない場合は、スクリプトの開始時に@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
それ以外の場合はエラーになります
「ping.bat」という名前を使用する場合は、次のコードを使用するのが簡単です。
@echo off
cd\
ping google.com -t
「cd \」を追加するだけで問題ありません...;)
ファイル名「ping」を使用し、コード「ping」を使用している理由を知っています。実際にpingを実行したい場合は、そのファイルが選択されたディレクトリにあるため、それ自体を実行しようとしますpingコマンドの前に:「cd C:\ Windows\system32」、サーバーをpingする実際のファイルはそこにあります!
Bash(OSX)ping google.com -c 1
(ケース検索でここに来ました)
同じフォルダーに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」が含まれている場合も同様です。スクリプトはループで自分自身を実行します。
これを避ける簡単な方法:
- スクリプトに「ping.bat」という名前を付けないでください。
- スクリプトに「ping.bat」という名前を付けることができますが、スクリプト内では「ping google.com」ではなく「ping.exe google.com」を使用します。
mofiサンプルを使用し、いくつかのパラメーターを変更します。
@%SystemRoot%\ system32\ping.exe -n -1 4.2.2.4
二重引用符を付けずにコマンド「ping your server IP」を書くだけです。ファイル名をfilename.batとして保存してから、管理者としてバッチファイルを実行します
この場合に考慮する必要があるのは、コンピューター上のどのディレクトリにあるかだけです。コマンドラインウィンドウには、現在のディレクトリとして_C:\users\rei0d\desktop\
_と表示されます。
したがって、本当に必要なことは次のとおりです。
コマンド_cd ..
_を使用して「上に」移動し、desktop
を削除します。
したがって、完全なコマンドは次のようになります。
_cd ..
ping XXX.XXX.XXX.XXX -t
_