Okay, also hier ist die Situation. Ich habe eine sehr große Textdatei, die viele verschiedene IP-Adressen enthält. Ich möchte eine Batch-Datei erstellen oder alles, was die Arbeit erledigt, um alle Host-Namen für diese IP-Adressen aufzulösen.Holen Sie Hostnamen von Ping und speichern Sie Ergebnisse in Text
Derzeit, ich habe die IP-Adressen eine Zeile pro Zeile in einer Datei namens addresss.txt gespeichert.
Ich habe auch eine Batch-Datei mit dem folgenden Code:
@echo off
for /f "delims=" %%a in (addresses.txt) do ping -a %%a >> PING_LOG.txt && (echo %%a Passed) || (echo %%a Failed)
pause
Dies scheint in Ordnung zu arbeiten. Es füllt meine Textdatei mit allen Ergebnissen aus dem Ping; der Hostname, die Antworten, die Statistiken, die Pakete, usw.
Hier ist das Problem: ich nur die Adresse Ich möchte pinged und den Hostnamen in meine Ausgabedatei geschrieben werden. Kann ich das irgendwie schaffen? Durch die Stapelbefehle? Mit anderen Mitteln (z. B. indem Sie die Ausgabedatei verwenden und sie durch etwas anderes führen, um die Informationen zu erfassen)? Ich versuche immer noch aktiv zu sehen, was ich herausfinden kann, aber jegliche Hilfe würde immens geschätzt werden.
(Das Endziel ist es, die Hostnamen und Adressen in einer Excel-Tabelle Seite an Seite zu platzieren, und wenn man bedenkt es gibt buchstäblich Tausende von ihnen tun es manuell schrecklich klingt)
MY ENDLÖSUNG
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%A in (addresses.txt) do (
set "_res=%%A"
for /f "tokens=2" %%B in ('^(nslookup %%A ^) ^| findstr /c:"Name:"') do set "_res=!_res!, %%B"
echo !_res! >> LOG.txt
echo !_res!
)
endlocal
Dank Dmitry und Gravity für die Hilfe^
Als nächstes nahm ich die Daten und ließ ihn in ein Tabellenkalkulationsprogramm (nur eine Spalte). Ich schrieb ein Makroskript, das jede Zelle betrachtete, die Daten in ein String-Array unter Verwendung des Kommas als Delimeter aufteilte und dann jede resultierende Zeichenfolge in eine Spalte nebeneinanderlegte (ip | name).
eine IP-Adresse erzeugen Pingen wird nicht (normalerweise) gib den Hostnamen zurück dieser IP-Adresse für Sie. Klingt ein wenig mehr wie "nslookup" -Funktion ist was Sie brauchen .. aber Sie sagen, dass _ "... füllt meine Datei mit allen Ergebnissen ... ** Hostname ** ..." _ Es gibt Umgebungen, in denen einige Leute sehen Hostnamen in 'ping' Ergebnissen, aber ich würde nicht empfehlen, sie hier zu verwenden. – gravity
@gravity: 'ping -a' tut normalerweise. – Stephan
@gravity -a erhielt die Informationen, die ich brauchte, aber Sie haben Recht, nslookup ist besser. Das habe ich total vergessen. Ich werde versuchen, die Lösung von Dmitry mit nslookup neu zu schreiben, und ich werde posten, was auch immer ich mir vorstellen kann. – Thomas