Batch, commande ping et rapport d'erreur

Fermé
joe.mojito - 21 mars 2008 à 15:03
 JPC - 2 avril 2008 à 15:30
Bonjour,

j'ai cherché des infos un peut partout mais je n'y arrive pas.

Mon but est de lancer un batch qui ping des adressses d'ordinateurs portables et qui m'envoit un message netsend des que les ordinateurs sont connectés (avec en plus l'option d'avoir un log (si possible))


j'ai fait ca:
@echo off
if "%1"=="*ping*" goto ping
set marche=
echo ne pas fermer la fenetre

:loop
for %%a in (126.160.254.140 126.163.33.23 126.163.33.24 126.163.33.32 126.163.52.13 126.163.81.25 126.101.12.14 126.101.106.70 126.149.100.172 126.149.120.27 126.102.46.52 126.102.89.5) do call %0 *ping* %%a
goto loop

:ping
echo ping en cours de %2
ping -n 1 %2 | find "TTL=128" 
if not ERRORLEVEL 1 goto attente

echo.|date | find "actu" >> ping.txt
echo.|time | find "actu" >> ping.txt
echo Et %2 repond >> ping.txt

echo %marche% | find "*%2*" 
if not ERRORLEVEL 1 goto attente

net send 126.160.254.140 %2 repond.
set marche=%marche% *%2*

:attente
ping -n 20 127.0.0.1 
if errorlevel 1 exit


j'ai le message netsend me disant que l'adresse %2 répond meme si elle ne répond pas. (en regardant la fenetre du batch il ping 127.0.0.1 et repasse a 127.0.0.1)

pouvez m'orientez sur l'erreur ?

merci d'avance

1 réponse

help :(
0
Ton erreur se situe au niveau de ton premier If not ERRORLEVEL 1 qui devrait être if ERRORLEVEL 1

Si tu utilises Windows 2000/2003/XP, tu n'est pas obligé de faire un call de ton propre batch mais tu peux incorporer à ton batch des appel à des procédures comme ci-dessous.
!!! Ton batch , ainsi que tes procédures doivent se terminer par :EOF
Dans l'exemple en-dessous les IP adresses sont celle de mon réseau, et j'ai mis "net send ...." en echo car net send est disablé chez moi.
Encore une petite remarque: si un des PC ne répond plus àprès avoir répondu, ta variable "marche" n'est plus correcte !!!

@echo off
cls
set marche=
echo Log file des ping. > ping.txt
echo ------------------ >> ping.txt
echo Ne pas fermer la fenetre
echo Arret du programe par CTRL-C

:loop
for %%a in (129.159.231.1 129.159.231.10 129.159.231.11 129.159.231.12 129.159.231.13 129.159.231.14 129.159.231.15 129.159.231.16 129.159.231.60 129.159.231.71 129.159.231.81 129.159.231.91 129.159.231.111 ) do call :pinging %%a
goto loop
goto :EOF

:pinging
echo ping en cours de %1
ping -n 1 %1 | find "TTL="
if ERRORLEVEL 1 goto attente

echo %date% %time% %1 repond >> ping.txt

echo %marche% | find "*%1*"
if not ERRORLEVEL 1 goto attente

echo net send 126.160.254.140 %1 repond.
set marche=%marche% *%1*

:attente
echo Attente de 20 secondes
ping -n 20 127.0.0.1 > nul
if errorlevel 1 exit
goto :EOF
0