0
@echo off
setlocal enabledelayedexpansion
>result.txt (
  for /f %%a in (srvrname.txt) do (
   ping -n 1 %%a > nul && echo %%a up||echo %%a DOWN 
))

上記のスクリプトを使用して、いくつかのサーバーの ping テストを行っていました。ping コマンドの出力が echo UP または echo DOWN セクションにどのように渡されるかを理解したい..UNIX のように $? if[$? のように、前のコマンドが正常に実行されたかどうかを確認します。-eq 0] その後; 成功しなければ失敗します。これはバッチ スクリプトでどのように行われますか。$ のような変数はありますか? バッチで。私にお知らせください。また、pingtest スクリプトを改善できるかどうか提案してください。

4

1 に答える 1

1

を探していると思います%errorlevel%

これにより、最後に実行されたコマンドのエラー コードが表示されます。

if %errorlevel%==0 echo SUCCESS
if %errorlevel%==1 echo FAIL

注:設定できるエラーコードの全範囲があります。例として 1 を使用しました。エラーコードの意味を確認するには、コマンドのドキュメントを確認してください。

ただし、ループで使用%errorlevel%している場合は、for遅延拡張を使用する必要があることに注意してください。

既にスクリプト ( ) に追加されているので、 を に変更するsetlocal enabledelayedexpansionだけです。 %!

@echo off
setlocal enabledelayedexpansion
>result.txt (
  for /f %%a in (srvrname.txt) do (
   ping -n 1 %%a > nul
   if !errorlevel!==0 (
   echo Ping replied successfully
   ) else (
   echo There was an error
   )
))
于 2013-02-01T11:22:10.587 に答える