Recupéré adresse IP et MAC de PC via un Batch [Fermé]

Signaler
-
 P@m@zigh -
Bonjour à tous,

J'ai fais un script batch pour obtenir des adresse IP et MAC à partir d'un fichier nommé host_list.txt.
Le script stock les informations sous forme HOSTNAME;IP;MAC dans un fichier addr_host_list.csv.

Le problème c'est que les PC pour lesquels je n'arrive pas à obtenir d'adresse IP ou/et MAC j'aimerais quand même les mettre dans le fichier .csv sous le format HOSTNAME;IP; et HOSTNAME;;

Hors avec mon script, ces postes ne sont pas traitées et donc n'apparaissent pas dans le fichier .csv.

J'ai tenté avec des ERRORLEVEL = 1 mais ça ne fonctionne pas.

Voici mon script .bat (batch MS-DOS):

@echo off
echo Cette etape peut prendre quelque minutes.
echo Script en cours... 
echo HOSTNAME;IP;MAC > addr_host_list.csv

rem Trouver les adresses IP via les HOSTNAMES par un PING
for /f "usebackq tokens=1 delims=\r" %%i in ("host_list.txt") do (
	IF ERRORLEVEL = 0 (
		for /f "tokens=2 delims=[]" %%j in ('ping -n 1 %%i') do (
			for /f "tokens=2 delims=<=>" %%k in ('nbtstat -a %%j ^| findstr "MAC"') do (
				echo %%i;%%j;%%k >> addr_host_list.csv	
				echo !
			)
		)
	) ELSE IF ERRORLEVEL = 1 (
		echo %%i;NOK;NOK >> no_addr_host_list.csv
	)
)
echo Le fichier "addr_host_list.csv" a ete genere dans le meme dossier que le script "addr_host_list.bat".
pause


Merci pour votre aide, Cordialement,

Florian


4 réponses

Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 325
hello
le IF ERRORLEVEL = 0 teste l'errorlevel de quelle commande ?
Messages postés
2
Date d'inscription
vendredi 1 juin 2012
Statut
Membre
Dernière intervention
1 juin 2012

Il test le FOR précédent, mais j'ai deja essayé de jouer avec les ERRORLEVEL mais ça ne fonctionne pas :\

Sinon je l'ai mal utilisé mais je ne pense pas.
Messages postés
2
Date d'inscription
vendredi 1 juin 2012
Statut
Membre
Dernière intervention
1 juin 2012

PS : Florian = moi ;)
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 325
n'est-ce pas l'errorlevel du ping qu 'il faudrait tester ? machine existe et répond errorlevel=0, machine n'existe pas ou ne répond pas, errorlevel <> 0
Il faut metre le if et le else sur la meme ligne !