Lecture d'un fichier sous DOS

Résolu
Bonjour,

SVP j'ai besoin d'aide... je dois lire des elements dans fichier ligne par ligne, et je ne connais pas les commandes sous dos pour le faire.
pouvez vous m'aider?????

merci d'avance
Configuration: Windows XP
Firefox 3.0.13

20 réponses

  1. Contributeur
    hello
    la variable %x contient chaque ligne du fichier

    $ type zz.txt
    aaaaaa aaaa aa
    bbbbbb bbb bbbb
    ccc ccc ccc
    ddd ddd ddd

    $ for /f "tokens=*" %x in (zz.txt) do @echo ++%x++
    ++aaaaaa aaaa aa++
    ++bbbbbb bbb bbbb++
    ++ccc ccc ccc++
    ++ddd ddd ddd++
    0
    1. hello,

      merci bcp pour ta réponse... et dsl pour le retard j'etais pas devant le poste ces derniers jours.
      j'ai essayé ce que tu m'a proposé et ca marche bien, mais j'ai un ptit probleme. dans la boucle for je lance une commande et j'utilise la variale ou la ligne du fichier est stoké.. il me retourne a la ligne apres l'affichige de la variable...

      jpub -u MEHDI/MEHDI -package=org.hps.exemple.jpublisher -plsqlpackage=PCRD_SGMB_
      AVIS_OPERATIONS -plsqlfil
      e=PCRD_SGMB_AVIS_OPERATIONS
      _wrapper.sql,PCRD_SGMB_AVIS_OPERATIONS
      _wrapper_drop.sql -s MEHDI.PCRD_SGMB_AVIS_OPERATIONS
      :Personne
      0
  2. Contributeur
    en utilisant echo ?
    0
    1. meme en utilisant echo...
      0
  3. Contributeur
    echo ajoute une fin de ligne automatiquement. dans mon exemple, entre la fin de la ligne et le ++, il n'y a pas de saut
    0
    1. oui tout a fait, j'ai essayé ton exempl et ca marche parfaitement. je comprend pas pourquoi ca affiche des sauts quand j'ai executé une commande.

      voivi le code:

      for /f "tokens=*" %p in (list.LST) do jpub -u MEHDI/MEHDI -package=org.hps.exemple.jpublisher -plsqlpackage=%p -plsqlfile=%p_wrapper.sql,%p_wrapper_drop.sql -s MEHDI.%p:Personne

      le fichier list.LST contient des nom de package sur chaque ligne..

      merciiii
      0
      1. Contributeur
        tu veux dire qu'après chaque %p il y a un saut de ligne ?
        y a -t-il des espaces dans les noms ?
        0
        1. Contributeur
          Ce n'est pas un problème de fin de ligne (type <CR><LF>) dans ton fichier ?
          0
          1. c'est un fichier qui contien des noms de package. chaque nom dans une ligne:

            PCRD_NDC_DISTRIBUTE_AMOUNT_1
            PCRD_NDC_EMV_PARAM_1
            PCRD_NDC_EMV_PARAM_2
            PCRD_NDC_EMV_WN
            PCRD_NDC_TERM_WATCH_MANAGEMENT
            PCRD_NDC_WATCH_CONFIG
            PCRD_P7_ACCOUNT_MNG
            PCRD_P7_AUTH_AMOUNT_MNG
            PCRD_P7_BALANCE_CONTROL
            PCRD_P7_BUSINESS_DATE_MNG
            0
            1. Contributeur
              bizarre, je n'ai pas de sauts

              $ type zz.txt
              PCRD_NDC_DISTRIBUTE_AMOUNT_1
              PCRD_NDC_EMV_PARAM_1
              PCRD_NDC_EMV_PARAM_2
              PCRD_NDC_EMV_WN
              PCRD_NDC_TERM_WATCH_MANAGEMENT
              PCRD_NDC_WATCH_CONFIG
              PCRD_P7_ACCOUNT_MNG
              PCRD_P7_AUTH_AMOUNT_MNG
              PCRD_P7_BALANCE_CONTROL
              PCRD_P7_BUSINESS_DATE_MNG
              $ type aa.bat
              @echo off
              
              for /f "tokens=*" %%p in (zz.txt) do (echo jpub -u MEHDI/MEHDI -package=org.hps.exemple.jpublisher -p
              lsqlpackage=%%p -plsqlfile=%%p_wrapper.sql,%%p_wrapper_drop.sql -s MEHDI.%%p:Personne
              echo ++++++++)
              
              $ aa
              jpub -u MEHDI/MEHDI -package=org.hps.exemple.jpublisher -plsqlpackage=PCRD_NDC_DISTRIBUTE_AMOUNT_1 -
              plsqlfile=PCRD_NDC_DISTRIBUTE_AMOUNT_1_wrapper.sql,PCRD_NDC_DISTRIBUTE_AMOUNT_1_wrapper_drop.sql -s
              MEHDI.PCRD_NDC_DISTRIBUTE_AMOUNT_1:Personne
              ++++++++
              jpub -u MEHDI/MEHDI -package=org.hps.exemple.jpublisher -plsqlpackage=PCRD_NDC_EMV_PARAM_1 -plsqlfil
              e=PCRD_NDC_EMV_PARAM_1_wrapper.sql,PCRD_NDC_EMV_PARAM_1_wrapper_drop.sql -s MEHDI.PCRD_NDC_EMV_PARAM
              _1:Personne
              ++++++++
              ....
              
              0
              1. oui, apparement ya des espaces apres chaque nom de package. tu ne connais pas une fontion qui supprime les espaces?

                merci pour ton aide :)
                0
                1. Contributeur
                  essaye en remplaçant "tokens=*" par "tokens=1"
                  0
                  1. ca marche :)))) merci infiniment

                    par contre j'ai une autre petite question...
                    si je veux creer un batch pour se connecter a sqlplus et lancer des requetes sql et faire un spool ds un fichier... comment puis je le faire ???

                    un truc du genre:

                    sqlplus login@base/password@monfichier.sql

                    sachant bien que monfichier.sql contient les requetes sql

                    merci d'avance
                    0
                    1. Contributeur
                      rediriger dans un fichier :

                      @echo off
                      sqlplus login@base/password @monfichier.sql > resultat.txt
                      0
                      1. merci bien ca marche! mais il m'enregistre dans le fichier en sortie le header et le footer... comment les enlever?

                        milles merci :)
                        0
                        1. Contributeur
                          essaye
                          -S
                          Sets silent mode which suppresses the display of the SQL*Plus banner, prompts, and echoing of commands.

                          sinon, il faut les extraire du fichier avec find ou findstr
                          0
                          1. j'ai trouvé une solution, je met le head en off et aussi le page... et je met un spool
                            mais il me reste la derniere ligne a enlever

                            tu connais la commande sous dos me permettant de supprimer les 2 dernieres lignes???

                            merci bcp pour ton aide
                            0
                            1. Contributeur
                              il n'y a pas de commande pour le faire directement, comme tail sur Unix,si le texte est toujours le même, on peut faire
                              find /v "texte" < entree.txt > sortie.txt
                              0
                              1. je met par exemple

                                find /v "992 ligne(s) sélectionnée(s)." < packages.LST > sortie.txt

                                le fichier généré ne change pas... il ne supprime pas la ligne pourtant le texte y est :s:s:s
                                0
                                1. Contributeur
                                  DOS n'aime pas les accents, essaye avec findstr
                                  findstr /v "992 ligne(s) s.lectionn.e(s)." < packages.LST > sortie.txt
                                  0
                                  1. merci bcp tu m'as sauvé la vie :D tout marche a merveille :))
                                    0

                                    Discussions similaires

                                    question pix mot caché

                                    7 réponses