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] errorlevel récalcitrant


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 35
    Par défaut [batch] errorlevel récalcitrant
    Bonjour à tous!

    J'ai un problème sur la déclaration d'une variable désignant un chemin d'accès à un dossier. Que ce dossier soit présent ou absent, errorlevel m'affirme sa présence.

    La situation :
    Sur le bureau d'un XP je crée un dossier "toto"
    Ensuite à l'aide d'un batch, je voudrais savoir si celui-ci existe bien.

    Le batch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
    @echo entrer le chemin
    set /p chemin=
    @if %errorlevel%==0 echo %chemin% present
    @if %errorlevel%==1 echo %chemin% absent
    pause
    A la question je désigne le chemin --> %userprofile%\bureau\toto
    Echo me renvoit "present".

    Si je supprime ce dossier du bureau et que je relance le batch ... Echo m'affiche toujours "present"???

    Qu'est ce qu'il ne va pas?

    Merci!

  2. #2
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Par défaut
    Salut,

    errorlevel ne peut pas te renvoyer autre chose que 0, puisque tu ne fais aucun test sur la présence de ton fichier

    Au lieu d'utiliser errorlevel, tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if exist %chemin% echo present
    if not exist %chemin% echo absent

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 35
    Par défaut
    Salut NorocBzh
    Merci de ton intervention.

    J'ai également testé la condition If exist
    Cela bloque également car le script passe directemment de :
    set /p chemin=
    à
    pause

    Si dans le script je rajoute une ouverture "provisoire" comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    @echo entrer le chemin
    set /p chemin=
    cd %chemin% 2>nul
    @if exist %chemin% echo present
    @if not exist %chemin% echo absent
    pause
    Résultat ==> absent (alors que toto est là!)

    J'en perds mon latin avec cette détection.

  4. #4
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Par défaut
    re,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @Echo off & Setlocal enableextensions enabledelayedexpansion
    @echo entrer le chemin
    set /p chemin=
    if exist %chemin% echo presentt &if !errorlevel!==0 echo %chemin% present
    if not exist %chemin% echo absentt &if !errorlevel!==0 echo %chemin% absent
    pause

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 35
    Par défaut
    Je n'avais pas pensé à l'expansion retardée, ni à combiner "if exist" et "!errorlevel!" ...
    Mais j'obtiens toujours le même résultat :
    toto absent

    C'est aberrant!

  6. #6
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Par défaut
    Chez moi ça marche

    Est ce que t'on chemin comporte des espaces ?

Discussions similaires

  1. Fichier batch récalcitrant
    Par Pierre95 dans le forum Débuter
    Réponses: 5
    Dernier message: 26/07/2013, 20h27
  2. batch pour faire une sauvegarde
    Par bibiodp dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 13/08/2003, 13h09
  3. [JSP]Exécution d'un batch
    Par tsco_ops dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/07/2003, 14h58
  4. [langage] errorlevel
    Par armada dans le forum Langage
    Réponses: 2
    Dernier message: 02/06/2003, 14h34
  5. Verifier qu'un dossier existe (batch)
    Par kakou dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 08/01/2003, 13h46

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