Batch-script für loop & nslookup
Gesehen hab ich diese Frage gepostet vor, aber keine der Lösungen-Adresse mein Problem. Ich bin einfach zu versuchen, Sie zum Durchlaufen einer Textdatei, die enthält host-Namen. Wenn ich versuche, den gleichen Befehl (wobei die extra-Prozent-Zeichen) von der Kommandozeile aus, es wird funktionieren, einmal oder zweimal, dann geben Sie den Fehler unten. Es läuft als batch-Datei, wird die batch-Datei beendet wird, ohne etwas zu tun. Dieser hat wirklich mich ratlos.
Hier ist der code meiner batch-Datei:
@echo off
set OUTPUTFILE=Results/Results.txt
set lookup=HostNames.txt
FOR /F %%i in (%lookup%) do
FOR /F "usebackq skip=3 delims=: tokens=2" %j in (`nslookup %i`)
do @echo %%i %%j >> %OUTPUTFILE%
Befehl an einer Eingabeaufforderung bekomme ich:
ich`) wurde unerwartet zu diesem Zeitpunkt.
Wenn ich es ausführen von der Befehlszeile nehme ich die zusätzliche Prozentzeichen braucht, wenn es in eine Batchdatei ausgeführt wird. Ich bin auch absolute Pfade in der Befehlszeile, um sicherzustellen, dass dies nicht ein Problem mit den environment Variablen habe ich gesetzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Probleme:
/
ist ein Schalter in winbatch;\
ist eine Verzeichnis-Ebene-separator.do (
muss auf der gleichen physikalischen Leitung als seinefor
%i
sollte%%i
%j
sollte%%j
Habe ich entfernt, die
usebackq
verändert und die Zitate aus der backticks zu single-quotes, da es nicht notwendigusebackq
hier.(kleinere Korrekturen Hinzugefügt)
Den "blinkenden cursor" wird durch
nslookup
anfordern von Informationen von der Tastatur. Hinzufügenecho(
versorgt einen Zeilenumbruch zu beendennslookup
und^|
ist das Escapezeichen-Rohr, das leitet die Ausgabe desecho
dem Eingang desnslookup
.Da mein setup unterscheidet sich grundlegend von deiner, ich tun kann, aber primitive überprüfung.
nslookup %i
Ich geändert Magoo ' s Antwort auf die Ausgabe in eine CSV-Datei. Es wird die Ausgabe zwei Spalten "#, Input, Output", wo Sie haben zwei Zeilen für jede erfolgreiche nslookup-Aufruf mit dem Hostnamen und eine mit der IP. Ich auch verändert, die delims begrenzen auf ":" und ", " so dass die Ausgabe nicht, haben eine Reihe von zusätzlichen Leerzeichen. Ich wollte zu enthalten, jede Abfrage auf eine einzelne Zeile mit den Spalten "Input, Hostname, IP", aber ich frustriert war, so habe ich nur noch ein Zähler in der Schleife ausgegeben und es als die erste Spalte für jede einzelne Abfrage und dachte, dies war gut genug.
versuchen wie diesem:
@Magoo hatte die beste Antwort für meine Bedürfnisse. Die batch-Datei funktioniert wie beabsichtigt, sobald ich festen ein wichtiges Thema: Kinder, NICHT die Namen Ihrer batch-Datei mit der internen windows-Befehl. Ich hatte die batch-Datei "nlookup.Fledermaus", das verursacht GROßE Gehirnschäden; eine Lektion, die ich nicht bald vergessen.
Danke an Euch alle, das funktioniert gut jetzt!