Script Batch pour la boucle & nslookup
J'ai vu cette question posté avant, mais aucune des solutions de l'adresse de mon problème. J'essaye simplement de parcourir un fichier texte qui contient des noms d'hôte. Lorsque j'essaie la même commande (en omettant les extra signes de pourcentage) à partir de la ligne de commande, il va travailler une ou deux fois, puis ensuite donner l'erreur indiqué ci-dessous. En l'exécutant en tant que fichier de commandes, le fichier de commandes quitte sans rien faire. Celui-ci a vraiment perplexe moi.
Voici le code dans mon fichier de commandes:
@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%
À une ligne de commande j'obtiens:
i`) était inattendu en ce moment.
Quand je le lance en ligne de commande, je prends le pourcentage supplémentaire signes besoins lorsqu'il s'exécute dans un fichier de commandes. Je suis également utiliser des chemins absolus dans la ligne de commande, afin de s'assurer que ce n'est pas un problème avec les variables d'environnement, j'ai créé.
Vous devez vous connecter pour publier un commentaire.
Problèmes:
/
est un interrupteur dans winbatch;\
est un répertoire de niveau-séparateur.do (
doit être sur la même ligne que safor
%i
devrait être%%i
%j
devrait être%%j
J'ai enlevé le
usebackq
et changé les citations de backticks de simples guillemets car il n'est pas nécessaire d'utiliserusebackq
ici.(corrections mineures ajoutée)
Le "curseur clignotant" est causée par
nslookup
demandant des informations à partir du clavier. L'ajout deecho(
fournit un retour à la ligne pour mettre fin ànslookup
et^|
est une fuite de tuyau qui dirige la sortie de cetteecho
à l'entrée denslookup
.Depuis mon installation diffère radicalement de la vôtre, je peux le faire, mais primitive de vérification.
nslookup %i
J'ai modifié Magoo, en réponse à la sortie vers un fichier CSV. Il affiche deux colonnes "#, d'Entrée, de Sortie", où vous aurez deux lignes pour chaque succès nslookup appel, l'un avec le nom de l'hôte, et l'un avec l'adresse IP. J'ai aussi modifié le delims à délimiter sur les ":" et "" pour que la sortie ne pas avoir un tas d'espaces supplémentaires. Je voulais contenir chaque requête sur une seule ligne avec des colonnes d'Entrée", du nom d'hôte IP" mais je me suis senti frustré, donc j'ai juste ajouté un compteur dans la boucle et de sortie comme la première colonne séparée pour chaque requête et pensé que c'était assez bon.
essayer comme ceci:
@Magoo a la meilleure réponse à mes besoins. Le fichier batch fonctionne comme prévu une fois que j'ai résolu un problème majeur: les Enfants, NE PAS le nom de votre fichier de commandes avec un interne de windows nom de la commande. J'ai appelé le fichier de commandes "nlookup.chauve-souris" qui ont causé d'IMPORTANTS dommages au cerveau; une leçon que je ne vais pas oublier.
Merci à vous tous, cela fonctionne bien maintenant!