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 :

GOTO ne voit pas les : [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut GOTO ne voit pas les :
    Bonjour,
    J'essaye d'optimiser un script que j'ai créer, je voudrais que si le net use ne se fait pas, il m'affiche une erreur dans un fichier et passe la copie puis le net use /delete.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    for /f "skip=2 tokens=1,* delims=," %%a in (postes_product.txt) do (
    echo %%b >>trace.log
    NET USE M: %%a\c$ /user:localhost\administrateur **********
    if ERRORLEVEL 1 goto Problem
    if ERRORLEVEL 0 goto NoProblem
    :NoProblem (
    copy /y modif_proxy.bat M:\
    echo ok pour %%b >>trace.log
    NET USE M: /delete
    GOTO Next
    )
    :Problem (
    echo erreur pour %%b >>trace.log
    goto Next
    )
    :Next
    echo au suivant >>trace.log
    )
    Lorsque j'exécute ce script, je n'ai dans trace.log que cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FRBEAW060 
    erreur pour %b 
    au suivant
    Si je rajoute une pause à la fin j'ai droit à cela dans la console
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    C:\essai>for /F "skip=2 tokens=1,* delims=," %a in (postes_product.txt) do (
    echo %b  1>>trace.log
     NET USE M: %a\c$ /user:localhost\administrateur ********
     if ERRORLEVEL 1 goto Problem
     if ERRORLEVEL 0 goto NoProblem
     copy /y modif_proxy.bat M:\
     echo ok pour %b  1>>trace.log
     NET USE M: /delete
     GOTO Next
    )
    
    C:\essai>(
    echo FRBEAW060  1>>trace.log
     NET USE M: \\FRBEAW060\c$ /user:localhost\administrateur ********
     if ERRORLEVEL 1 goto Problem
     if ERRORLEVEL 0 goto NoProblem
     copy /y modif_proxy.bat M:\
     echo ok pour FRBEAW060  1>>trace.log
     NET USE M: /delete
     GOTO Next
    )
    L'erreur système 85 s'est produite.
    
    Nom de périphérique local déjà utilisé.
    
    
    C:\essai>echo erreur pour %b  1>>trace.log
    
    C:\essai>goto Next
    
    C:\essai>echo au suivant  1>>trace.log
    Il ne voit pas les : devant NoProblem, Problem et Next.
    J'ai essayé sans et avec parenthèse, avec et sans ":", en rajoutant "setlocal enabledelayedexpansion" au début du script (je l'ai lu sur un forum). Rien n'y fait.
    Je ne comprends pas.

    Si vous pouvez m'aider Merci.

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut Bestio,

    Essaye comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for /f "skip=2 tokens=1,* delims=," %%a in (postes_product.txt) do (
    echo %%b >>trace.log
    NET USE M: %$a%\c$ /user:localhost\administrateur **********
    
    if ERRORLEVEL 1 (echo erreur pour %$b% >>trace.log)
    
    if ERRORLEVEL 0 (copy /y modif_proxy.bat M:\
                           echo ok pour %$b% >>trace.log
                           NET USE M: /delete))

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut
    Citation Envoyé par sachadee Voir le message
    Salut Bestio,

    Essaye comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for /f "skip=2 tokens=1,* delims=," %%a in (postes_product.txt) do (
    echo %%b >>trace.log
    NET USE M: %$a%\c$ /user:localhost\administrateur **********
    
    if ERRORLEVEL 1 (echo erreur pour %$b% >>trace.log)
    
    if ERRORLEVEL 0 (copy /y modif_proxy.bat M:\
                           echo ok pour %$b% >>trace.log
                           NET USE M: /delete))
    Bonjour, j'ai adapter mon script comme tu me l'a conseillé. or, celui-ci me retourne en cas d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    W001 
    erreur pour W001 
    ok pour W001 
    au suivant
    W001 est le nom du poste.
    Si il n'y a pas d'erreur cela fonctionne (je l'ai provoqué volontairement pour voir si le script fonctionne).
    Je pense que cela vient du fait que ce n'est pas l'erreur n°1 mais une autre.
    Est-il possible de mettre un
    ou bien
    ?
    Encore merci.

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if %errorlevel% geq 1 (ton code)
    GEQ = greater or equal
    LEQ = less or equal

    if /? pour plus de renseignement

    Amicalement

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut
    Citation Envoyé par sachadee Voir le message
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if %errorlevel% geq 1 (ton code)
    GEQ = greater or equal
    LEQ = less or equal

    if /? pour plus de renseignement

    Amicalement
    bonjour,
    %errorlevel% est toujours à 0 même si il y à une erreur.
    Lorsque je tape
    La commande me retourne 0 et lorsque le code défile il y a ien une erreur mais elle est égale à 0.
    Du coup, j'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for /f "skip=2 tokens=1,* delims=," %%a in (postes_product.txt) do (
    echo %%b >>trace.log
    NET USE M: %%a\c$ /user:localhost\administrateur ntwkst
    if %errorlevel% geq 1 ( echo erreur %errorlevel% pour %%b >>trace.log
    ef %errorlevel% equ 0 (copy.....)
    Est-il possible d'utiliser un else, histoire qu'il n'y ai pas de problème.
    Merci.

  6. #6
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if %errorlevel% geq 1 (echo erreur %errorlevel% pour %%b >>trace.log)
     else (copy.....)
    Amicalement

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut
    Citation Envoyé par sachadee Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if %errorlevel% geq 1 (echo erreur %errorlevel% pour %%b >>trace.log)
     else (copy.....)
    Amicalement
    Bonjour,
    Encore merci à toi de m'aider. J'ai déjà essayé ceci, et il me dit que "else n'est pas une commande". Est-ce parce que je l'utilise dans un .bat et non pas un .cmd?

    il me retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'else' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    Merci

  8. #8
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Met le "ELSE" sur la même Ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if %errorlevel% geq 1 (echo erreur %errorlevel% pour %%b >>trace.log) else (copy.....)
    Et IF /?

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut
    Citation Envoyé par sachadee Voir le message
    Met le "ELSE" sur la même Ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if %errorlevel% geq 1 (echo erreur %errorlevel% pour %%b >>trace.log) else (copy.....)
    Et IF /?
    Merci à toi, problème résolue
    Mais je ne sais toujours pas pourquoi les : ne fonctionne pas.
    Si jamais tu as une idée je suis preneur.
    Encore merci.

  10. #10
    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 Bestio Voir le message
    Mais je ne sais toujours pas pourquoi les : ne fonctionne pas.
    il y a une erreur avec le goto qui sort de la boucle for délimitée par ( et )
    Tu dois absolument rester dans les parenthèses de la boucle for ou utiliser des sous-programmes (call :problem)

    tu devras mettre les sous-programmes à la fin et mettre juste avant un
    goto :eof
    pour terminer ton programme et éviter que le sous-programme soit exécuté sans avoir été appelé
    par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    REM blablabla
    echo blablabla
    call :problem
    
    REM Fin du programme, on sort....
    goto :eof
    
    REM ---------------------------------------------
    REM Debut des sous-programmes
    :problem
        echo erreur
    REM Sortie du sous-programme 'problem'
    goto :eof


    De mémoire, il me semble avoir arrêté les goto dans ce type de cas parce qu'ils "cassent" les boucles. On ne peut rien y faire

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

Discussions similaires

  1. [CDT] Completion qui ne voit pas les .h
    Par Rakken dans le forum Eclipse C & C++
    Réponses: 5
    Dernier message: 25/06/2008, 18h03
  2. Beagle ne voit pas les fichiers Open Office
    Par gifffftane dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 14/02/2008, 10h32
  3. Vista qui ne voit pas les autres ordinateurs du réseau
    Par rjulie dans le forum Windows Vista
    Réponses: 7
    Dernier message: 29/06/2007, 15h09
  4. Sqlserver 2005 ne voit pas les users du domaine
    Par sandmil dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 04/01/2007, 09h08
  5. [Debutant(e)]Eclipse ne voit pas les sources
    Par uliss dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 04/08/2004, 09h34

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