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 :

Récupérer une donnée dans un fichier pour l'utiliser ensuite


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut Récupérer une donnée dans un fichier pour l'utiliser ensuite
    Bonjour

    Je souhaiterais réaliser une recherche dans un répertoire connu sur tout les fichiers présent à l'intérieur. Le texte à chercher est encadrer par
    "DB RAILALU" et "DB BcoulCon" et recuperer se texte pour le coller dans un seul fichier txt destination

    Par exemple dans mon dossier C:\test\ j'ai un seul fichier (A-42408)

    DB coifCont 6000
    DP 1745 90 90 1654021
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "coiffe"
    DB coifCont 6000
    DP 1745 90 90 1654022
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "coiffe"
    DB coifCont 6000
    DP 1745 90 90 1654023
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "coiffe"
    DB BattCont 6000
    DP 1745 90 90 1654024
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Battement"
    DB RAILALU 6500
    DP 1680 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Rail Alu"
    OP TRAIL 30
    OP TRAIL 435
    OP TRAIL 840
    OP TRAIL 1245
    OP TRAIL 1650
    DB BcoulCon 6500
    DP 4470 90 90 1654025
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Prof Coul cont"
    DB BcoulCon 6500
    DP 1035 90 90 1654026
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Prof Coul cont"
    DB BcoulCon 6500
    DP 3435 90 90 1654027
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Prof Coul cont"
    DB MontCont 6500
    DP 1745 90 90 1654028
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Montants Milieu"
    OP Mort68b 66.2
    OP Mort68h 1680.2
    OP Tige10 13
    OP Tige10 200
    OP Tige10 1545
    DB MontCont 6500
    DP 1745 90 90 1654029
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Montants Milieu"
    OP Mort68b 66.2
    OP Mort68h 1680.2
    OP Tige10 13
    OP Tige10 200
    OP Tige10 1545
    DB MontCont 6500
    DP 1745 90 90 16540210
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Montants Pilier"
    OP Mort68b 66.2
    OP Mort68h 1680.2
    OP Chapeau 1737
    DB MontCont 6500
    DP 1745 90 90 16540211
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Montants Pilier"
    OP Mort68b 66.2
    OP Mort68h 1680.2
    OP Chapeau 1737
    DB TravCont 6500
    DP 1971 90 90 16540212
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Traverse haute"
    DB TravCont 6500
    DP 1971 90 90 16540213
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Traverse haute"
    DB TravCont 6500
    DP 1971 90 90 16540214
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Traverse Basse"
    OP Roulette 860
    OP EvacEau 78
    OP EvacEau 1893
    OP EvacEau 4
    OP EvacEau 1967
    DB TravCont 6500
    DP 1971 90 90 16540215
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Traverse Basse"
    OP Roulette 860
    OP EvacEau 78
    OP EvacEau 1893
    OP EvacEau 4
    OP EvacEau 1967
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"



    Et lorsque que je lance mon batch, je voudrais que dans le même repertoire, il y a maintenant en plus un fichier "Rail.txt" avec ceci à l'intérieur :

    DB RAILALU 6500
    DP 1680 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Rail Alu"
    OP TRAIL 30
    OP TRAIL 435
    OP TRAIL 840
    OP TRAIL 1245
    OP TRAIL 1650

    Cordialement

  2. #2
    Expert éminent sénior
    Avatar de JML19
    Homme Profil pro
    Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Inscrit en
    Décembre 2010
    Messages
    14 916
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Retraité : Electrotechnicien Electronicien Informaticien de la SNCF
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2010
    Messages : 14 916
    Points : 23 212
    Points
    23 212
    Billets dans le blog
    10
    Par défaut recuperer donnée pour l'utiliser
    Bonjour

    Tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Type c:\test\A-42408 > c:\test\Rail.txt
    Vous pouvez utiliser les FAQ (ICI) ou les Tutoriels (ICI) et aussi accéder au blog (ICI)

  3. #3
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    quelque chose comme ça peut être?

    remplace data.txt par le chemin d'accès du fichier a traiter (entre guillemets s'il contient des espaces)

    Code bat : 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
    @echo off
    setlocal enabledelayedexpansion
     
    for /f "usebackq delims=" %%a in (`type data.txt ^| find /n /i "DB RAILALU"`) do (
      for /f "usebackq tokens=1 delims=[]" %%b in ('%%a') do if not defined Line_RailAlu set "Line_RailAlu=%%b"
    )
     
    for /f "usebackq delims=" %%a in (`type data.txt ^| find /n /i "DB BcoulCon"`) do (
      for /f "usebackq tokens=1 delims=[]" %%b in ('%%a') do if not defined Line_BCoulCon set "Line_BCoulCon=%%b"
    )
     
    set /a "CounterLine=0"
     
    for /f "usebackq delims=" %%a in (`type data.txt ^| find /n /v ""`) do (
      for /f "usebackq tokens=1 delims=[]" %%b in ('%%a') do (
        if %%b geq !Line_RailAlu! (
          if %%b lss !Line_BCoulCon! (
            echo %%a  >>Rail.txt
          )
        )
      )
    )
     
     
    pause
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Bonjour


    Tout d'abord merci pour vos reponses. Initscreen merci pour ta réponse qui fonctionne parfaitement.
    Seul souci c'est quel'on vient de m'apprendre qu'il n'y a pas obligatoirement un "DB Bcoulcon" apres mon texte. Je peux avoir un autre "DB RAILALU" et donc il faudrait que je le copie aussi.
    En faite il faut continué à copié tant que l'on rencontre que des "DB RAILALU" et dès que l'on rencontre un autre "DB" on arrete et continue de parcourir le reste du fichiers puis ensuite on refait la même opération avec tout les autres fichier *.lot* du répertoire.

    Nouvelle exmple :

    DB coifCont 6000
    DP 1745 90 90 1654021
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "coiffe"
    DB coifCont 6000
    DP 1745 90 90 1654022
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "coiffe"
    DB coifCont 6000
    DP 1745 90 90 1654023
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "coiffe"
    DB BattCont 6000
    DP 1745 90 90 1654024
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Battement"
    DB RAILALU 6500
    DP 1680 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Rail Alu"
    OP TRAIL 30
    OP TRAIL 435
    OP TRAIL 840
    OP TRAIL 1245
    OP TRAIL 1650
    DB RAILALU 6500
    DP 1680 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Rail Alu"
    OP TRAIL 30
    OP TRAIL 435
    OP TRAIL 840
    OP TRAIL 1245
    OP TRAIL 1650
    DB BcoulCon 6500
    DP 4470 90 90 1654025
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Prof Coul cont"
    DB BcoulCon 6500
    DP 1035 90 90 1654026
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Prof Coul cont"
    DB BcoulCon 6500
    DP 3435 90 90 1654027
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Prof Coul cont"
    DB MontCont 6500
    DP 1745 90 90 1654028
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Montants Milieu"
    OP Mort68b 66.2
    OP Mort68h 1680.2
    OP Tige10 13
    OP Tige10 200
    OP Tige10 1545
    DB MontCont 6500
    DP 1745 90 90 1654029
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Montants Milieu"
    OP Mort68b 66.2
    OP Mort68h 1680.2
    OP Tige10 13
    OP Tige10 200
    OP Tige10 1545
    DB MontCont 6500
    DP 1745 90 90 16540210
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Montants Pilier"
    OP Mort68b 66.2
    OP Mort68h 1680.2
    OP Chapeau 1737
    DB MontCont 6500
    DP 1745 90 90 16540211
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Montants Pilier"
    OP Mort68b 66.2
    OP Mort68h 1680.2
    OP Chapeau 1737
    DB RAILALU 6500
    DP 1680 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Rail Alu"
    OP TRAIL 30
    OP TRAIL 435
    OP TRAIL 840
    OP TRAIL 1245
    OP TRAIL 1650
    DB TravCont 6500
    DP 1971 90 90 16540212
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Traverse haute"
    DB TravCont 6500
    DP 1971 90 90 16540213
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Traverse haute"
    DB TravCont 6500
    DP 1971 90 90 16540214
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Traverse Basse"
    OP Roulette 860
    OP EvacEau 78
    OP EvacEau 1893
    OP EvacEau 4
    OP EvacEau 1967
    DB TravCont 6500
    DP 1971 90 90 16540215
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "Traverse Basse"
    OP Roulette 860
    OP EvacEau 78
    OP EvacEau 1893
    OP EvacEau 4
    OP EvacEau 1967
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB Lpleinco 6500
    DP 1878 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coul republique" "" "1|14 Lame Pleine"
    DB RAILALU 6500
    DP 1680 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Rail Alu"
    OP TRAIL 30
    OP TRAIL 435
    OP TRAIL 840
    OP TRAIL 1245
    OP TRAIL 1650
    OP TRAIL 1650
    OP TRAIL 1650
    OP TRAIL 1650
    OP TRAIL 1650
    donc le resultat sera:

    DB RAILALU 6500
    DP 1680 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Rail Alu"
    OP TRAIL 30
    OP TRAIL 435
    OP TRAIL 840
    OP TRAIL 1245
    OP TRAIL 1650
    DB RAILALU 6500
    DP 1680 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Rail Alu"
    OP TRAIL 30
    OP TRAIL 435
    OP TRAIL 840
    OP TRAIL 1245
    OP TRAIL 1650
    DB RAILALU 6500
    DP 1680 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Rail Alu"
    OP TRAIL 30
    OP TRAIL 435
    OP TRAIL 840
    OP TRAIL 1245
    OP TRAIL 1650
    DB RAILALU 6500
    DP 1680 90 90
    ET "012010/00/000" "A-LANDREAU/000" "A-LANDREAU" "ACES[165402" "Coulrepublique" "" "Rail Alu"
    OP TRAIL 30
    OP TRAIL 435
    OP TRAIL 840
    OP TRAIL 1245
    OP TRAIL 1650
    OP TRAIL 1650
    OP TRAIL 1650
    OP TRAIL 1650
    OP TRAIL 1650


    Comment fait-on pour avoir que les informations des lignes sans leurs numéros.

    Cordialement

  5. #5
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Voilà, par contre il faut appelé le script avec comme premier paramètre le noms du DB que tu cherche. Par exemple si tu cherche "DB RAILALU", le premier paramètre doit être "RAILALU".

    Code bat : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    @echo off
    setlocal enabledelayedexpansion
     
    set "SearchDB=%~1"
     
    for /f "usebackq delims=" %%a in (`type data.txt ^| find /n /i "DB"`) do (
      for /f "usebackq tokens=1 delims=[]" %%b in ('%%~a') do (
        set /a "CounterEntries+=1"
        set "Entrie_!CounterEntries!=%%b"
      )
    )
     
    for /f "usebackq delims=" %%a in (`type data.txt ^| find /n /i "DB %SearchDB%"`) do (
      for /f "usebackq tokens=1 delims=[]" %%b in ('%%~a') do (
        set /a "CounterTarget+=1"
        set /a "Target_!CounterTarget!_begin=%%b"
      )
    )
     
    for /l %%a in (1 1 !CounterTarget!) do (
      for /l %%b in (1 1 !CounterEntries!) do (
        if !Entrie_%%b! equ !Target_%%a_begin! (
          set /a "Next=%%b + 1"
          call :Fix %%a !Next!
        )
      )
      for /f "usebackq delims=" %%A in (`type data.txt ^| find /n /v ""`) do (
        for /f "usebackq tokens=1* delims=[]" %%B in ('%%~A') do (
          if %%~B geq !Target_%%a_begin! (
            if %%~B lss !Target_%%a_end! (
              echo %%C >>%SearchDB%.txt
            )
          )
        )
      )
    )
     
     
    pause
    exit /b
    :Fix
    if defined Entrie_%2 (
      set /a "Target_%1_end=!Entrie_%2!"
    ) else (
      set /a "Target_%1_end=0x7FFFFFFF"
    )
    goto :eof
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Encore merci pour votre réponse rapide.

    Lorsque je lance mon batch, il n'y a pas de fichier créée alors que j'ai des DB RAILALU. Et je n'ai pas très bien compris quelle premier paramètre je dois changer. Je suis désolé je débute dans ce langage.

  7. #7
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    Citation Envoyé par Radeonisos Voir le message
    Encore merci pour votre réponse rapide.

    Lorsque je lance mon batch, il n'y a pas de fichier créée alors que j'ai des DB RAILALU. Et je n'ai pas très bien compris quelle premier paramètre je dois changer. Je suis désolé je débute dans ce langage.
    la ligne que tu dois executé doit contenir un paramètre
    c'est à dire, il faut que tu executes un truc du genre :

    Ici, RAILALU est le 1er paramètre passé à ton script.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Ah ok donc je dois le lancer en mode console. Le souci c'est que j'essaie de réaliser se "programme" pour la chef d'atelier et il lui faut quelque chose de facile d'utilisation.

  9. #9
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    Dans ce cas tu as deux possibilités :


    soit tu gardes le coté paramétrable, mais tu gères toi même les paramètres ...
    de ce fait, tu créés deux .bat dont le premier appelle le second avec le paramètre qui convient.
    Ainsi, tu peux créer après un troisième .bat dans lequel tu mets un autre paramètre, et donc la personne qui s'occupe de lancer cela n'aura qu'a double cliqué sur le .bat qui convient.
    Tu peux par exemple avoir ton programme generique dans 'script.bat'
    et apres, tu as RAILALU.bat qui contient juste :
    et par exemple
    coifCont.bat qui contient :

    Ca, c'est en gardant le coté paramétrable, et en faisant quand même qlq chose de cliquable, utra simple pour un utilisateur lambda.



    L'autre solution, c'est tu supprimes le coté paramétrable, et dans ce cas, tu as juste à remplacer dans ton script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set "SearchDB=%~1"
    par
    set SearchDB=RAILALU
    Mais ton script sera figé sur le recherche de RAILALU...




    EDIT : troisième possibilité, faire une invite au moment de lancement, qui permettrait à l'utilisateur de taper le mot qu'il veut rechercher.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup à vous tous. Cela fonctionne parfaitement avec ce code

    batch :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    @echo off
    setlocal enabledelayedexpansion
     
    set SearchDB=RAILALU
     
    for /f "usebackq delims=" %%a in (`type *.lot* ^| find /n /i "DB"`) do (
      for /f "usebackq tokens=1 delims=[]" %%b in ('%%~a') do (
        set /a "CounterEntries+=1"
        set "Entrie_!CounterEntries!=%%b"
      )
    )
     
    for /f "usebackq delims=" %%a in (`type *.lot* ^| find /n /i "%SearchDB%"`) do (
      for /f "usebackq tokens=1 delims=[]" %%b in ('%%~a') do (
        set /a "CounterTarget+=1"
        set /a "Target_!CounterTarget!_begin=%%b"
      )
    )
     
    for /l %%a in (1 1 !CounterTarget!) do (
      for /l %%b in (1 1 !CounterEntries!) do (
        if !Entrie_%%b! equ !Target_%%a_begin! (
          set /a "Next=%%b + 1"
          call :Fix %%a !Next!
        )
      )
      for /f "usebackq delims=" %%A in (`type *.lot* ^| find /n /v ""`) do (
        for /f "usebackq tokens=1* delims=[]" %%B in ('%%~A') do (
          if %%~B geq !Target_%%a_begin! (
            if %%~B lss !Target_%%a_end! (
              echo %%C >>%SearchDB%.txt
            )
          )
        )
      )
    )
     
     
    pause
    exit /b
    :Fix
    if defined Entrie_%2 (
      set /a "Target_%1_end=!Entrie_%2!"
    ) else (
      set /a "Target_%1_end=0x7FFFFFFF"
    )
    goto :eof

    Cela répond bien au cahier des charges

  11. #11
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    Il te reste plus qu'à faire une distribution de pouces verts à tous ceux qui t'ont aidé

    content que ca fonctionne en tout cas

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    C'était déjà fait

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut Erreur invisible à l'oeil
    Bonjour

    De retour sur ce post après un certain temps, malheureusement.

    Le fichier créée par la suite du traitement n'était pas pris par la machine pour la découpe des barres. Après analyse je sais d'où vient l'erreur. Il y a des espaces à la fin de chaque ligne dans le nouveau fichiers. Il ne faudrait pas qu'il soit la. Savez-vous comment faire svp?

    Cordialement

  14. #14
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Assure toi qu'il n'y est pas d'espace après '%%C' à la ligne 31 en copiant le code et se sera bon

    Code bat : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    @echo off
    setlocal enabledelayedexpansion
     
    set SearchDB=RAILALU
     
    for /f "usebackq delims=" %%a in (`type *.lot* ^| find /n /i "DB"`) do (
      for /f "usebackq tokens=1 delims=[]" %%b in ('%%~a') do (
        set /a "CounterEntries+=1"
        set "Entrie_!CounterEntries!=%%b"
      )
    )
     
    for /f "usebackq delims=" %%a in (`type *.lot* ^| find /n /i "%SearchDB%"`) do (
      for /f "usebackq tokens=1 delims=[]" %%b in ('%%~a') do (
        set /a "CounterTarget+=1"
        set /a "Target_!CounterTarget!_begin=%%b"
      )
    )
     
    for /l %%a in (1 1 !CounterTarget!) do (
      for /l %%b in (1 1 !CounterEntries!) do (
        if !Entrie_%%b! equ !Target_%%a_begin! (
          set /a "Next=%%b + 1"
          call :Fix %%a !Next!
        )
      )
      for /f "usebackq delims=" %%A in (`type *.lot* ^| find /n /v ""`) do (
        for /f "usebackq tokens=1* delims=[]" %%B in ('%%~A') do (
          if %%~B geq !Target_%%a_begin! (
            if %%~B lss !Target_%%a_end! (
              1>>%SearchDB%.txt echo %%C
            )
          )
        )
      )
    )
     
     
    pause
    exit /b
    :Fix
    if defined Entrie_%2 (
      set /a "Target_%1_end=!Entrie_%2!"
    ) else (
      set /a "Target_%1_end=0x7FFFFFFF"
    )
    goto :eof
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  15. #15
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Pour information, une commande d'appel se forme ainsi:

    <cmd> <param1> <param2> ...

    dans le cas de notre script <cmd> est le nom du script (avec son chemin d'accès s'il n'est pas dans le dossier courant), <param1> est le premier paramètre et ainsi de suite.

    comme ça tu pourra reprendre le script que je t'es donné au message #5 et changé la ligne 31 par celle fournit au message #14 pour avoir un script adaptable en fonction des besoins
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup de m'avoir accordé du temps. Tout fonctionne correctement et est adaptable.

    Bonne journée et merci à vous tous

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut De nouveau de retour vers vous
    Bonjour à tous


    Je suis de retour car le cahier des charges a légèrement changé. Jusqu'à maintenant le script se trouvait dans le même répertoire que tous les autres fichiers *.lot* à tester. A présent je dois faire en sorte que le script soit dans un dossier où il y a plusieurs sous-dossiers (dont les noms changent) et tester tout les fichiers présent dans chaque sous-dossiers. Dans ces même sous-dossiers, il n'y a que des fichiers à tester *.lot*, aucun autres sous-sous-dossier . Savez-vous si cela est possible?

  18. #18
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Avec une boucle 'for /r', sa donne quelque chose comme ça (!?! ATTENTION !?! Je ne l'ai pas testé)

    Code bat : 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    @echo off
    setlocal enabledelayedexpansion
     
    set "SearchDB=%~1"
     
    for /r "%cd%" %%i in ("*.lot*") do (
      for /f "usebackq delims=" %%a in (`type "%%~i" ^| find /n /i "DB"`) do (
        for /f "usebackq tokens=1 delims=[]" %%b in ('%%~a') do (
          set /a "CounterEntries+=1"
          set "Entrie_!CounterEntries!=%%b"
        )
      )
     
      for /f "usebackq delims=" %%a in (`type "%%~i" ^| find /n /i "DB %SearchDB%"`) do (
        for /f "usebackq tokens=1 delims=[]" %%b in ('%%~a') do (
          set /a "CounterTarget+=1"
          set /a "Target_!CounterTarget!_begin=%%b"
        )
      )
     
      for /l %%a in (1 1 !CounterTarget!) do (
        for /l %%b in (1 1 !CounterEntries!) do (
          if !Entrie_%%b! equ !Target_%%a_begin! (
            set /a "Next=%%b + 1"
            call :Fix %%a !Next!
          )
        )
        for /f "usebackq delims=" %%A in (`type "%%~i" ^| find /n /v ""`) do (
          for /f "usebackq tokens=1* delims=[]" %%B in ('%%~A') do (
            if %%~B geq !Target_%%a_begin! (
              if %%~B lss !Target_%%a_end! (
                1>>%SearchDB%.txt echo %%C
              )
            )
          )
        )
      )
    )
     
    pause
    exit /b
    :Fix
    if defined Entrie_%2 (
      set /a "Target_%1_end=!Entrie_%2!"
    ) else (
      set /a "Target_%1_end=0x7FFFFFFF"
    )
    goto :eof
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 18
    Points : 7
    Points
    7
    Par défaut
    Merci de votre réponse.

    Malheureusement cela ne fonctionne pas. Aucun fichier n'est créée à la fin du traitement. Et dans la console, aucun message s'affiche.

  20. #20
    Membre éclairé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Points : 738
    Points
    738
    Billets dans le blog
    2
    Par défaut
    Avez-vous lancer le script dans le répertoire qui contient les sous-répertoires ?
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/12/2009, 13h24
  2. Réponses: 14
    Dernier message: 05/05/2008, 16h35
  3. Réponses: 1
    Dernier message: 19/04/2008, 17h26
  4. Réponses: 1
    Dernier message: 05/09/2006, 18h56
  5. Réponses: 1
    Dernier message: 19/04/2006, 00h16

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