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 :

problème de boucle dans un.bat [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut problème de boucle dans un.bat
    Bonjour

    je suis confornter à un problème dans mon bat.

    Je souhaite vérifier la présence de plusieurs fichiers dans différents répertoires pour chacun je doissi il est présent, le renommer puis supprimer un autre fichier créer dans un autre répertoire.

    voici le code
    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
    32
    33
    dir
    set /p mois= Quel est le mois en cours de traitement :     rem  on rentre le mois de traitement  ex 05
    set /p annee= Quel est l'année cours de traitement :       rem  on rentre l'année de traitement  ex 2014
    set nom1= AAAA%annee%%mois%                                REM nom du premier fichier à vérifier la présence  
    set chemin1="c:\test\annee_en_cours\AAAA\"                 rem répertoire dans lequel il doit figurer
    set fichier1 = AAAA
    set nom2= BBBBB%annee%%mois%                           REM nom du 2eme fichier à vérifier la présence
    set chemin2="c:\test\annee_en_cours\BBBBB\"            rem répertoire dans lequel il doit figurer
    set fichier2 = BBBB
    set nom3= CCCC%annee%%mois%                            REM nom du 3e fichier à vérifier la présence
    set chemin3="c:\test\annee_en_cours\CCCC\"             rem répertoire dans lequel il doit figurer
    set fichier3 = CCCC
    
    
    rem  dans la boucle suivante je désire vérifier la présence du nom(1) dans chemin(1) puis nom(2) dans chemin(2) au rythme du pas de ma boucle FOR
    
    setlocal enableDelayedExpansion 
    for /l %%v in (1, 1,3) do ( 
    
    set/A cheminactuel=chemin%%v                 rem  --> dans la premiere boucle valeur devrait être chemin1
    set/A fichier=nom%%v                         rem  --> dans la premiere boucle valeur devrait être nom1
    SET fichieractuel = %fichier%aaaamm.txt        rem  --> dans la premiere boucle valeur devrait être nom1aaaamm.txt  (il dépend de la valeur au dessus )
    set nomactuel = %fichier%%%v%annee%%mois%.txt   rem --> dans la premiere boucle valeur devrait être AAAA201405.txt  ( comme le précise les éléments d'entrée ligne 2&3)
    
    IF EXIST !cheminactuel!\%fichieractuel% (ren %fichieractuel% %nomactuel%.txt    rem --> si le fichier existe je le renomme mais cheminactuel reste désespérement vide
    pause
    IF EXIST c:\test\resultat\%fichier%aaaamm.xml   del c:\test\resultat\%fichier%aaaamm.xmlsaaaamm.xml )  rem -> puis je supprime le fichier 
    pause
    dir )
    endlocal
    
    
    l

    Lors que je suis dans la boucle for les chemins et les noms de fichiers n'apparaissent pas correctement donc le bat ne s exécute pas .

    je fais vraisemblablement une erreur mais je ne vois pas où ?

    par avance 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
    Le set /a en bat se réfere à une opération mathématique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set/A cheminactuel=chemin%%v
    vat te setter %cheminactuel% à 0

    donc essaye avec un simple SET et retourne si tu as toujours des problèmes


  3. #3
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    bonsoir

    j ai retiré les set /A mais j'ai toujours une problème au passage de la ligne 21 à 22 lors de l'exécution

    si set fichier=nom%%v donne bien nom1 dans la première boucle


    SET fichieractuel = %fichier%aaaamm.txt ne donne pas nom1aaamm.txt comme je le souhaiterai

    cordialement

  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
    SET fichieractuel = %fichier%aaaamm.txt ne donne pas nom1aaamm.txt comme je le souhaiterai
    Tu dois également faire attention au espace :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET fichieractuel=%fichier%aaaamm.txt%
    [/CODE]


  5. #5
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    bonjour

    rien n y fait j ai beau supprimer ou ajouter des espaces

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SET fichier=nom%%v                                  La variable fichier prend bien la valeur nom1
    SET fichieractuel = %fichier%aaaamm.txt       la variable fichieractuel devraitprendre la valeur nom1aaaamm.txt mais reste désespérement à aaaamm.txt
    comme je le précise en marge du code, la variable fichieractuel devraitprendre la valeur nom1aaaamm.txt mais reste désespérement à aaaamm.txt

    cordialement

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    Bonjour

    voilà

    après une remise à plat de mon code, j'ai réussi à obtenir le résultat que l'escomptais.


    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
    echo off
    
    SET /p mois= Quel est le mois en cours de traitement :
    SET /p annee= Quel est l'année cours de traitement :
    
    SET fichier1=AAAA
    
    SET fichier2=BBBB
    
    SET fichier3=CCCC
    
    SETlocal enableDelayedExpansion
    
    for /L %%i in (1,1,3) Do (
    set text=!fichier%%i!
    SET chemin=c:\test\annee_en_cours\!text!
    cd !chemin!
    IF EXIST !text!aaaamm.txt (ren !text!aaaamm.txt !text!%annee%%mois%.txt
    IF EXIST !text!%annee%%mois%.txt   del c:\test\resultat\!text!aaaamm.xml )
    )
    )

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/05/2010, 09h54
  2. [LV 8.6] Problème de boucle dans une boucle
    Par Quent' dans le forum LabVIEW
    Réponses: 10
    Dernier message: 28/05/2009, 16h49
  3. Problème de boucle dans deux curseurs.
    Par amine1980 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 13/11/2008, 15h52
  4. [Débutant] Problème de boucle dans un programme
    Par Nicolampion dans le forum MATLAB
    Réponses: 3
    Dernier message: 24/04/2008, 18h57
  5. problème de connect dans un .bat sous winXP
    Par sher56 dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 28/06/2006, 15h19

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