2009-05-10 12 views
0

Je travaille sur un fichier batch pour rassembler les adresses MAC de deux de mes clients sous-réseaux mais pour une raison quelconque mon fichier batch ne termine pas correctement la première boucle, donc la seconde boucle n'est pas exécutée et donc le reste du script n'est pas en cours d'exécution. Des idées sur pourquoi cela se passe-t-il?Le fichier batch ne sort pas correctement de la boucle?

for /L %%i in (1,1,254) do ping.bat 192.168.232 %%i 
for /L %%i in (1,1,254) do ping.bat 192.168.233 %%i 
REM Some other stuff goes on here but the second loop never gets executed 

Merci beaucoup à l'avance

EDIT: ping.bat contient simplement ceci:

nbtstat -A %1.%2 

Pour obtenir l'adresse MAC via NetBIOS

+0

Pouvez-vous nous montrer ce que ping.bat fait? –

Répondre

2

Le démarrage d'un fichier batch annule le fichier batch "mère". Bien qu'elle semble terminer la ligne actuelle; votre première boucle FOR est effectivement exécutée 254 fois.

Ajout d'une instruction CALL fixerait ceci:

for /L %%i in (1,1,254) do call ping.bat 192.168.232 %%i 
for /L %%i in (1,1,254) do call ping.bat 192.168.233 %%i 
echo Test complete! 

Avant l'instruction CALL a été introduite, il a été résolu en exécutant le fichier batch enfant dans une nouvelle instance de l'interpréteur de commandes:

for /L %%i in (1,1,254) do COMMAND /C ping.bat 192.168.232 %%i 
+1

Vous pouvez également simplement utiliser la commande de ping.bat directement dans la boucle: do nbtstat -A 192.168.232. %% i – Joey

0

Très probablement, il attend pour la réponse de l'autre extrémité. N'avez-vous pas essayé de réduire le temps mort? Je vous suggère d'ajouter un compteur factice pour vérifier s'il attend une réponse ou pendu .. :-)

+0

Je ne pense pas qu'il attende la réponse de l'autre extrémité parce que dès qu'il pings x.x.x.254 le script termine son exécution en ignorant les autres commandes dans le fichier batch. –

+0

Pouvez-vous ajouter des informations sur ping.bat? –

Questions connexes