ネットワーク上のどのマシンがオンラインでオフラインであるかを示すスクリプトを作成しようとしています。バッチ内の値セットを削除する
現在、私はオンライン変数/オフライン状態を表示しており、PC名をテキストファイルから入力変数として設定しています。
私がこれまで持っているコードは次のとおりです。マシンがオンラインになったら、私は起こるしたい何
@echo off
setlocal EnableDelayedExpansion
for /F "tokens=*" %%a in (VC.txt) do call :append %%a
:ping
for %%i in (%VC) do (
ping %%1 -n 1 >nul
call :test %%i
)
echo.
goto :ping
:test
IF %ERRORLEVEL% EQU 0 (
echo Pinging %1
) else (
echo Off %1
)
goto :eof
:append
if defined VC (
set VC=%VC% %1
) else (
set VC=%1
)
は、リストから削除するには、です。基本的には、オフラインマシンのリストだけを表示します。 セット全体を拭き取り、新鮮なものにすることなく、これは可能ですか?
デザインに関する質問:マシンがオンラインになったからといっても、オンラインになるわけではありません。ポーリング間隔が何であっても、マシンのリスト全体を再スキャンする必要がない理由を理解できますか?追加の考え:あなたは "歴史"の統計を保持する必要がありますか?例えば特定のマシンの平均稼働時間、マシンの全停止時間。これを「バッチ」ファイルで行うのは最適ではないようですが、その理由はおそらくあります。とにかく、申し訳ありませんが私はあなたの正確な質問を助けることができません。 *肩をすくめる*幸運。 – jgreve
2つのタイプミスがあります: '%VC' do '(%VC%)do( '%'記号がありません)の '%% iのために'を読み、' ping %% 1 -n 1 'ping %% i -n 1'を読んでください... – aschipfl
@jgeveこのリストはマシンがオンラインになるように常に再スキャンされます。そして、いいえ、私は歴史を必要としません。基本的には、オンラインになるとすぐにファイルをマシンにコピーする必要があります。そのため、ファイルを追跡するのに役立ちます。 –