Batch, commande ping et rapport d'erreur

joe.mojito -  
 JPC -
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
Configuration: Windows XP
Firefox 2.0.0.10

1 réponse

  1. joe.mojito
     
    help :(
    0
    1. JPC
       
      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