Pingen Sie die IP-Adresse und speichern Sie das Ergebnis in einer TXT-Datei.

792
Kelly

Ich versuche, eine Liste der IP-Adressen zu öffnen und diese zu pingen und die Antwort dann in einer TXT-Datei zu speichern. Der Ping durchläuft ein Problem und führt ein Problem aus und meldet sich korrekt. Ich kann jedoch die Ergebnisse in einer Textdatei speichern.

@echo off  SET LOGFILE=MyLogFile.log call :Logit >> %LOGFILE%  exit /b 0  for /f "delims=" %%a in ( ' type "C:\Users\kelly\Desktop\Ping\computerlist.txt" ' ) do ping -n 1 %%a >nul && (echo %%a ok >> %LOGFILE% ) || (echo %%a failed to respond >> %LOGFILE% )  pause 
1
Ist dies ein Auszug aus Ihrer Batchdatei? Ich sehe kein Label für Logit, nur eine Aufrufanweisung. sippybear vor 6 Jahren 0
@sippybear nein das ist mein ganzer scrip. Ich habe wahrscheinlich etwas verpasst, das ich normalerweise nicht mit Fledermaus-Dateien baue, also googelte ich und stellte Sachen zusammen. Alles war gut, bis zu dem Zeitpunkt, zu dem die Ergebnisse der txt-Datei hinzugefügt wurden. Kelly vor 6 Jahren 0

2 Antworten auf die Frage

1
sippybear
@echo off SET LOGFILE=C:\Temp\MyLogFile.log SET PINGLIST=C:\Users\kelly\Desktop\Ping\computerlist.txt for /f "delims=" %%a in (%PINGLIST%) DO ping -n 1 %%a > nul && (echo %%a is ok >> %LOGFILE%) || (echo %%a is unreachable! >> %LOGFILE%) 

Stellen Sie einfach sicher, dass Ihre Computerliste nur einen Hostnamen in jeder Zeile enthält.

Eingabe (computerlist.txt)

gooobler google.com msn.com localhost 

Ausgabe (MyLogFile.log)

gooobler is unreachable!  google.com is ok  msn.com is unreachable!  localhost is ok  
Ich musste es als Administrator ausführen Kelly vor 6 Jahren 0
0
mshafer

Wo du hast do ping -n 1 %%a >nul

Das heißt, die Ping-Ausgabe nehmen und wegwerfen.

Ich denke du willst

do ping -n 1 %%a >%LOGFILE%

Sie rufen auch eine nicht vorhandene Region / Unterprogramm auf (Logit).

@echo off  SET LOGFILE=MyLogFile.log call :Logit >> %LOGFILE%  exit /b 0  :Logit for /f "delims=" %%a in ( ' type "C:\Users\kelly\Desktop\Ping\computerlist.txt" ' ) do ping -n 1 %%a >nul && (echo %%a ok >> %LOGFILE% ) || (echo %%a failed to respond >> %LOGFILE% )  pause 

(ungetestet)

~~ Bearbeiten basierend auf dem Kommentar von OP und nun ~~ getestet

Ich denke, das ist was Sie suchen:

@ECHO OFF SET LOGFILE=logFile.txt SET TEMP_FILE=temp.txt SET PINGLIST=comps.txt   REM contatenate log file echo. > %LOGFILE%  for /f "delims=" %%a in (%PINGLIST%) do ( REM do ping and store response - using a temp file because we care about the response more than once. ping -n 1 %%a > %TEMP_FILE%  REM append response to log file type %TEMP_FILE% >> %LOGFILE%  REM from: https://stackoverflow.com/a/8531199 REM check if ping determined the host is unreachable by searching the output findstr /c:"Destination host unreachable" /c:"could not find host" %TEMP_FILE% > NUL  REM if the errorlevel is at least 1 (unsuccessful at finding string) if errorlevel 1 ( REM then must have reached host echo %%a is ok >> %LOGFILE% ) ELSE ( REM else, we found the string that sais we cannot reach the host echo %%a is UNREACHABLE^! >> %LOGFILE% ) REM cleanup del %TEMP_FILE% ) exit /b 
Also habe ich jetzt das. `@echo off SET LOGFILE = C: \ Benutzer \ kelly \ Desktop \ Ping \ MyLogFile.log SET PINGLIST = C: \ Benutzer \ kelly \ Desktop \ Ping \ computerlist.txt für / f" delims = "%% a in ( % PINGLIST%) Ping -n 1 %% a>% LOGFILE% && (Echo %% a ist in Ordnung >>% LOGFILE%) || (echo %% a ist nicht erreichbar! >>% LOGFILE%) `Es funktioniert, schreibt jedoch nur in die erste Zeile und wenn zwei fehlschlagen, wird nur die letzte Zeile angezeigt, die ausgeführt werden soll. Ich möchte zeigen, ob es fehlgeschlagen ist, wenn es bei allen erfolgreich war. Kelly vor 6 Jahren 0
Ummm, ich denke, dass Sie wollen, dass der `ping -n 1 %% a>% LOGFILE%` stattdessen angehängt wird (`ping -n 1 %% a >>% LOGFILE%`), aber ich denke nicht, dass sich das löst alle deine Fragen. Weil Ping 0 zurückgibt (betrachtet es als Erfolg, solange es selbst von Ihrem DNS eine Antwort erhält, dass das Ziel nicht erreichbar ist). mshafer vor 6 Jahren 0
@ Kelly Ich habe meinen Beitrag aktualisiert. Sie müssen die Dateipfade an das anpassen, was Sie verwenden möchten, aber ich denke, es wird für Sie funktionieren. (Wenn Sie Leerzeichen in den Pfaden haben, müssen Sie die Variablen bei ihrer Verwendung auch in Anführungszeichen setzen.) mshafer vor 6 Jahren 0