Boucle FOR et variable issu d'un fichier tiers

Résolu
yaphilde Messages postés 35 Statut Membre -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous et merci d’avance de l’aide que vous m’apporterez
Voici mon problème
J’ai 2 fichiers
« Usager.txt » qui contient ma liste d’usager. Chaque ligne correspond au « NOM » et « Prénom » de l’usager il se présente sous cette forme :
Usager.txt
Ce fichier contient ma liste d’usager. Chaque ligne correspond au NOM et Prénom de l’usager il se présente sous cette forme :
DELON Alain
BARDOT Brigitte
PITT Brad


ACL.txt
Ce fichier contient la définition de droits des usagers. Il se présente sous cette forme :
"\\?\F:\CSES\Modele\01 - ACL\template\R1 Accueillir\01 - Dossier admission\04 - Courriers",1,"O:BAG:DU"
"\\?\F:\CSES\Modele\01 - ACL\template\R1 Accueillir\01 - Dossier admission\05 - Dossier administratif Accueil",1,"O:BAG:DU"
"\\?\F:\CSES\Modele\01 - ACL\template\R1 Accueillir\02 - MDPH",1,"O:BAG:DUD:AI(A;OICI;0x1301bf;;;S-1-5-21-1504173220-2678980005-1044320739-1701)"
"\\?\F:\CSES\Modele\01 - ACL\template\R1 Accueillir\02 - MDPH\01 - Dossier",1,"O:BAG:DU"
"\\?\F:\CSES\Modele\01 - ACL\template\R1 Accueillir\02 - MDPH\02 - Notification",1,"O:BAG:DU"
"\\?\F:\CSES\Modele\01 - ACL\template\R1 Accueillir\03 - Contrat de séjour - DIPC",1,"O:BAG:DU"

J’aimerai faire un batch qui me permette de faire la procédure suivante :
Créer un fichier « ACLfull.txt » qui contient l’ensemble des résultats de la boucle suivante :
Pour chaque occurrence de ligne dans le fichier usager.txt
Remplacer dans le fichier « ACL.txt » le mot « template » par le NOM Prénom de l’usager.

Je pense qu’il faut utiliser la commande « FOR /F » mais j’ai beaucoup de difficulté à obtenir un résultat satisfaisant.
Mille mercis d’avance

10 réponses

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    Bonjour,

    Si je comprend bien, ACLfull.txt contiendra plusieurs fois le fichier ACL.txt, est-ce bien cela ?
    0
  2. yaphilde Messages postés 35 Statut Membre 2
     
    Coucou,
    merci de te pencher sur mon problème
    Oui c'est bien ca. Le fichier ACLFull.txt contiendra plusieurs fois le fichier ACL.txt
    Pour le moment j'ai un code de ce type là où la ligne:
    set ContenuModifie=Alain Delon
    doit devenir une variable issue du fichier usager.txt

    @echo Off
    cls
    set FichierATraiter=c:\DroitsUsager\ACL.txt
    set FichierDeSortie= c:\DroitsUsager\ACLFull.txt
    set Source=template
    set ContenuModifie=Alain Delon
    for /f "usebackq delims=*" %%T in ("%FichierATraiter%") do (
    Set TempVar=%%T
    set TempVar=!TempVar:%Source%=%ContenuModifie%!
    echo !TempVar!>>"%FichierDeSortie%"
    endlocal
    0
  3. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    Ca devrait ressembler à ça à peu de choses près :

    @echo Off
    Setlocal enableextensions enabledelayedexpansion

    set FichierATraiter=c:\DroitsUsager\ACL.txt
    set FichierDeSortie= c:\DroitsUsager\ACLFull.txt

    set usager=c:\DroitsUsager\Usager.txt

    for /f "tokens=* delims=" %%A in ("%usager%") do (
    set nomprenom=%%A

    for /f "tokens=* delims=" %%T in ("%FichierATraiter%") do (
    Set TempVar=%%T
    call set TempVar=!!TempVar:template=%nomprenom%!!
    echo !TempVar! >> %FichierDeSortie%
    )

    )

    Endlocal
    0
  4. yaphilde Messages postés 35 Statut Membre 2
     
    Merci,
    je regarde si ça fonctionne de suite
    Je te tiens au jus
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. yaphilde Messages postés 35 Statut Membre 2
     
    je viens de faire le test...et non ca ne me renvoie pas la bonne information
    voici le contenu du fichier nouvellement créé ACLfull.txt:

    c:\DroitsUsager\ACL.txt 
    0
  7. yaphilde Messages postés 35 Statut Membre 2
     
    J'ai modifié ton code de:
    tokens=* delims=

    en
    usebackq delims=*


    Il y a du mieux mais c'est pas encorde ca. voici le fichier ACLFull.txt généré:

    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\01 - Dossier admission\04 - Courriers",1,"O:BAG:DU" 
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\01 - Dossier admission\05 - Dossier administratif Accueil",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\02 - MDPH",1,"O:BAG:DUD:AI(A;OICI;0x1301bf;;;S-1-5-21-1504173220-2678980005-1044320739-1701)"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\02 - MDPH\01 - Dossier",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\02 - MDPH\02 - Notification",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\03 - Contrat de séjour - DIPC",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\01 - Dossier admission\04 - Courriers",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\01 - Dossier admission\05 - Dossier administratif Accueil",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\02 - MDPH",1,"O:BAG:DUD:AI(A;OICI;0x1301bf;;;S-1-5-21-1504173220-2678980005-1044320739-1701)"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\02 - MDPH\01 - Dossier",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\02 - MDPH\02 - Notification",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\03 - Contrat de séjour - DIPC",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\01 - Dossier admission\04 - Courriers",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\01 - Dossier admission\05 - Dossier administratif Accueil",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\02 - MDPH",1,"O:BAG:DUD:AI(A;OICI;0x1301bf;;;S-1-5-21-1504173220-2678980005-1044320739-1701)"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\02 - MDPH\01 - Dossier",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\02 - MDPH\02 - Notification",1,"O:BAG:DU"
    "\\?\F:\CSES\Modele\01 - ACL\\R1 Accueillir\03 - Contrat de séjour - DIPC",1,"O:BAG:DU"


    il y a du mieux mais ce n'est pas encore ca.
    Si tu as d'autres idées je suis preneur :-)
    0
  8. yaphilde Messages postés 35 Statut Membre 2
     
    oups voici mon code tel qu'il est lors de ce dernier test:
    @echo Off
    Setlocal enableextensions enabledelayedexpansion

    set FichierATraiter=c:\DroitsUsager\ACL.txt
    set FichierDeSortie=c:\DroitsUsager\ACLFull.txt

    set usager=c:\DroitsUsager\Usagers.txt

    for /f "usebackq delims=*" %%A in ("%usager%") do (
    set nomprenom=%%A
    echo %%A

    for /f "usebackq delims=*" %%T in ("%FichierATraiter%") do (
    Set TempVar=%%T
    call set TempVar=!!TempVar:template=%nomprenom%!!
    echo !TempVar! >> %FichierDeSortie%
    )

    )

    Endlocal
    0
  9. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    J'ai la solution, je l'ai testé cette fois-ci :

    @echo off

    set FichierATraiter=c:\DroitsUsager\ACL.txt
    set FichierDeSortie=c:\DroitsUsager\ACLFull.txt
    set usager=c:\DroitsUsager\Usager.txt

    Setlocal enableextensions enabledelayedexpansion

    for /f "tokens=* delims=" %%A in (%usager%) do (
    set nomprenom=%%A

    for /f "tokens=* delims=" %%T in (%FichierATraiter%) do (
    set ligne=%%T
    call set TempVar=%%ligne:template=!nomprenom!%%
    echo !TempVar! >> %FichierDeSortie%
    )
    echo. >> %FichierDeSortie%
    )
    Endlocal
    0
  10. yaphilde Messages postés 35 Statut Membre 2
     
    C'est bon ca fonctionne
    j'ai modifié la ligne

    call set TempVar=!!TempVar:template=%nomprenom%!!


    en

    call set TempVar=!!TempVar:template=%%A!!


    Voici le code final:
    @echo Off
    Setlocal enableextensions enabledelayedexpansion

    set FichierATraiter=c:\DroitsUsager\ACL.txt
    set FichierDeSortie=c:\DroitsUsager\ACLFull.txt

    set usager=c:\DroitsUsager\Usagers.txt

    for /f "usebackq delims=*" %%A in ("%usager%") do (
    set nomprenom=%%A
    echo %%A

    for /f "usebackq delims=*" %%T in ("%FichierATraiter%") do (
    Set TempVar=%%T
    echo %%T
    call set TempVar=!!TempVar:template=%%A!!
    echo !TempVar! >> %FichierDeSortie%
    )

    )

    Endlocal


    Nous venons de créer un publipostage en batch ^^

    Merci pour tout
    @++
    0
  11. yaphilde Messages postés 35 Statut Membre 2
     
    Nos tests se sont croisés.
    En tout cas un grand merci Barnabe.

    @++
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      De rien ;)

      Bonne journée à bientôt peut-être.
      0