Écrivez l'adresse ip locale de fichier texte à l'aide de fichier de commandes
Je veux créer un fichier batch qui écrit l'adresse IP locale sur un fichier txt. Quand je lance un fichier de commandes avec ce code (chemin d'accès du fichier est mal, mais ce n'est pas le problème):
ipconfig | find "IP Address" > \File.txt
- Je obtenir de l'ensemble de la configuration IP de windows (j'ai changé quelques numéros et des trucs avec des xxx de ne pas montrer toutes les infos)
IP Address. . . . . . . . . . . . : 100.100.100.223
IP Address. . . . . . . . . . . . : 192.xxx.xxx.xxx
Je veux écrire dans un fichier seulement 100.100.100.223
.
Je suis nouveau sur des fichiers batch et j'ai vraiment beaucoup cherché et je suis vraiment confus. (peut-être que je suis à la recherche avec les mauvais mots-clés).
Oublié de dire que je suis sous Windows XP (Parce que certaines réponses ne fonctionne pas sur XP).
OriginalL'auteur Kondax | 2012-12-13
Vous devez vous connecter pour publier un commentaire.
Lire la juste écrit un fichier de première ligne dans une variable à l'aide de la
SET /P
de la commande, puis remplacer le fichier avec cette ligne à l'aideECHO
:Mise à JOUR (en réponse aux commentaires):
Pour extraire juste l'adresse IP, vous pouvez utiliser un
FOR /F
boucle comme ceci:Un
FOR /F
boucle vous permet de traiter le texte (un fichier ou un littéral de chaîne), ligne par ligne, en divisant chaque ligne dans les champs (ou jetons) basé sur le séparateur spécifié(s). Vous pouvez lire plus au sujet de cette commande dans le fichier d'aide intégré (FOR /?
). Je vais seulement ajouter que dans ce cas, le traité est un littéral de chaîne (la valeur defirst_ip
), le séparateur est défini à:
, et la variable de boucle (%%I
) reçoit le 2ème jeton, qui est une adresse IP.Notez que l'espace entre
:
et l'IP est conservée, c'est à dire qu'il devient une partie du jeton (100.100.100.223
) et, par conséquent, est écrite dans le fichier. Si vous n'êtes pas très heureux à ce sujet, vous pouvez utiliser une sous-routine pour se débarrasser de l'espace, comme ceci:Lorsque la sous-routine est appelée (
CALL :MyEcho %%I
), l'argument est passé avec le premier espace. Mais lors du traitement de la sous-routine de la ligne de commande, que l'espace n'est plus considéré comme une partie de la valeur, parce que l'argument n'est pas cité et donc l'analyseur voit simplement un argument séparé du nom avec deux espaces. Ainsi, le%1
dans la sous-routine évalue à l'adresse sans l'espace.Encore une truc, avec ce que je imprimer " Adresse IP. . . . . . . . . . . . : 100.100.100.223" , puis-je changer quelque chose qu'il ne "100.100.100.223"
Veuillez voir ma mise à jour.
Vraiment soooo maaaaany merci!!! 😀 et pour l'explication encore plus!!!
OriginalL'auteur Andriy M
OriginalL'auteur Bali C
Si vous êtes OK avec powershell, essayez ceci:
& bien sûr, vous avez besoin de rediriger la sortie vers File.txt. Pas ajouté dans mon code.
Lors de l'utilisation de powershell de toute façon, pourquoi toujours faire l'horrible analyse? Utilisez simplement:
Get-NetIPAddress | % { $_.IPAddress }
^^Me donner
The term 'Get-NetIPAddress' is not recognized as the name of a cmdlet, function, script file, or operable program.
sur Win7. Mais oui, il ya de meilleures options disponibles. J'avais ajouté cette réponse il y a longtemps, quand j'ai dod connaissent pas les alternatives... la mise à Jour de la réponse.OriginalL'auteur anishsane
Vous pouvez utiliser autohotkey.
Pour boîte de Message,
Ou si vous voulez dans le fichier de texte de l'Utilisateur
Lien utile. https://autohotkey.com/board/topic/45109-how-to-get-my-ip-address/
OriginalL'auteur Pradeep Bede