IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Batch : script PING [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Par défaut Batch : script PING
    Peut on m'expliquer pourquoi cette commande ne fonctionne pas ?

    FOR /F %%I in (machines.txt) DO ping -n 1 %%I && IF NOT ERRORLEVEL 0 echo %%I >> pingNONOK.txt


    par contre celle-ci fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FOR /F %%I in (machines.txt) DO ping -n 1 %%I && IF ERRORLEVEL 0 echo %%I >> pingOK.txt

    je débute en batch, merci de votre compréhension...

    Je tiens quand même à garder une boucle FOR, et essayer de faire mon script pour trier les PC qui ping et ceux qui ne ping pas...

    merci de votre aide

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 245
    Par défaut
    A priori la commande ping ne positionne pas le flag ERRORLEVEL.

    Essaye plutôt ce script trouvé sur internet (j'aurais été bien incapable de le faire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FOR /F %%I IN (machines.txt) DO (
    set Ordi=%%I
    call :aa
    )
    exit
    
    :aa
    ping /n 1 %Ordi% | find "TTL" > nul
    if %ERRORLEVEL%==1 echo %Ordi% >> pingNONOK.txt 
    if %ERRORLEVEL%==0 echo %Ordi% >> pingOK.txt

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 29
    Par défaut
    Je viens de tester (XP SP3), la commande errorlevel retourne bien la bonne valeur (0 ou 1 suivant le cas).

    Par contre, la gestion de errorlevel est assez particulière avec le test que tu utilises:
    le test if errorlevel 0 est valable pour un code d'erreur de 0 ou... plus
    ce qui veut dire que le test sera positif pour errorlevel=0 ET pour errorlevel=1 (ou plus).
    Pour lever l'ambiguité, utilise le code de sevyc64:
    if NOT %errorlevel%==0
    ou
    if %errorlevel% NEQ 0


    ou fait ton test d'une autre facon:
    if errorlevel 1 (si le code d'erreur est 1 ou plus)
    Pour tester si le code d'erreur vaut 0, il faut utiliser une négation:
    if not errorlevel 1 (si le code d'erreur n'est pas 1 ou plus, c'est qu'il vaut 0 ou moins)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Par défaut réponse
    Merci pour votre intéret,

    Une tiers personnes à trouver cette solution qui fonctionne bien aussi :

    FOR /F %%I in (machines.txt) DO ping -n 1 %%I && ( echo %%I >> pingOK.txt ) || ( echo %%I >> pingNONOK.txt )
    si ça peut aider certains....

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Par défaut re
    bah bizarrement la commande que j'ai donné ci-dessus ne fonctionne plus.
    Quand je lance la commande seule dans un .bat ça tourne en boucle pendant 30s à 1 min et la fenetre dos se ferme et les 2 fichiers.txt associés restent vides....
    comprends pas
    pk ça marchait hier et là ça ne marche plus...?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 29
    Par défaut
    Citation Envoyé par obijes Voir le message
    bah bizarrement la commande que j'ai donné ci-dessus ne fonctionne plus.
    Quand je lance la commande seule dans un .bat ça tourne en boucle pendant 30s à 1 min et la fenetre dos se ferme et les 2 fichiers.txt associés restent vides....
    A tout hasard, tu as bien laissé tous les %%I en majuscule ?
    (les variables des boucles FOR sont sensibles à la casse)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/05/2007, 20h27
  2. Batch qui ping toutes les machines d'un réseau.
    Par djollo dans le forum Windows
    Réponses: 3
    Dernier message: 15/01/2007, 16h57
  3. script ping réseau
    Par tbechir76 dans le forum Réseau
    Réponses: 2
    Dernier message: 15/12/2006, 15h15
  4. script ping toutes les 5 minutes
    Par suya95 dans le forum Programmation et administration système
    Réponses: 13
    Dernier message: 03/10/2006, 13h45
  5. [Batch] Scripts pour un systeme de backup sur serveur
    Par placebomuse dans le forum Windows
    Réponses: 3
    Dernier message: 22/04/2006, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo