Ich versuche, ein Skript für die Arbeit zu schreiben, die mir sagt, welche Maschinen in einem Netzwerk online und welche offline sind.Entfernen von Werten aus Satz im Batch
Momentan habe ich es online/offline Status zeigen, die PC-Namen aus einer Textdatei als Eingabe in eine Set-Variable.
Der Code, den ich bisher habe, ist:
@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
)
Was will ich einmal geschehen ist ein Gerät online geht, ist es aus der Liste zu entfernen. Im Grunde nur zeigen Sie nur die Liste der Offline-Maschinen. Ist das möglich, ohne das ganze Set zu wischen und frisch zu machen?
Design Frage: nur weil eine Maschine online kam bedeutet nicht, dass es online bleiben wird. Helfen Sie mir zu verstehen, warum Sie nicht die gesamte Maschinenliste erneut durchsuchen müssen, unabhängig davon, welches Abfrageintervall Sie haben? Zusätzlicher Gedanke: Müssen Sie "Geschichte" Statistiken behalten? z.B. durchschnittliche Betriebszeit für eine bestimmte Maschine, Gesamtausfallzeit für Maschinen. Dies in einer "Batch" -Datei zu tun scheint suboptimal, aber Sie haben wahrscheinlich einen guten Grund dafür. Wie auch immer, tut mir leid, ich kann dir bei deiner genauen Frage nicht helfen. * Achselzucken * viel Glück. – jgreve
Es gibt zwei Tippfehler: 'für %% i in (% VC) do 'sollte' für %% i in (% VC%) do 'lesen (fehlendes'% 'Zeichen), und' ping %% 1 -n 1 'sollte lesen: 'ping %% i -n 1' ... – aschipfl
@jgeve, Die Liste wird ständig neu gescannt, um sicherzustellen, dass die Maschinen online bleiben. Und nein, ich brauche keine Geschichte. Grundsätzlich muss ich eine Datei auf eine Maschine kopieren, sobald sie online ist, damit ich sie verfolgen kann. –