Partage
  • Partager sur Facebook
  • Partager sur Twitter

BATCH

D'une ligne à une autre

Sujet résolu
    29 mars 2022 à 14:00:40

    Bonjour,

    Dans mon script BATCH, je récupère des lignes d'un fichier etc etc etc,

    Je voudrais dire à mon fichier de récupérer à partir de N ligne (donc le skip que j'ai fait) et lui dire de ne pas récupérer les N dernières lignes. (ce que je cherche)

    Exemple :

     Le volume dans le lecteur Y s'appelle Sauvegardes
     Le num‚ro de s‚rie du volume est CEBF-52DA
    
     R‚pertoire de Y:\Sauvegarde VM
    
    28/03/2022  22:04    <DIR>          .
    29/03/2022  09:20    <DIR>          ..
    28/03/2022  22:04           821,306 Sauvegarde VM.vbm
    27/02/2022  06:50    97,600,917,504 Sauvegarde VMs-6D2022-02-26T220014_78CA.vbk
    27/02/2022  23:05     9,327,566,848 Sauvegarde VMs-6D2022-02-27T220023_ECC3.vib
    28/02/2022  23:06     9,850,810,368 Sauvegarde VMs-6D2022-02-28T220009_9658.vib
    01/03/2022  23:46     6,733,135,872 Sauvegarde VMs-6D2022-03-01T220025_12C1.vib
    02/03/2022  23:04     4,461,498,368 Sauvegarde VMs-6D2022-03-02T220019_81E8.vib
    03/03/2022  23:22     4,791,119,872 Sauvegarde VMs-6D2022-03-03T220018_C1A2.vib
    04/03/2022  23:05     4,503,040,000 Sauvegarde VMs-6D2022-03-04T220033_39A5.vib
    06/03/2022  07:16    97,297,121,280 Sauvegarde VMs-6D2022-03-05T220023_8756.vbk
    06/03/2022  23:06    10,659,061,760 Sauvegarde VMs-6D2022-03-06T220014_A39B.vib
    07/03/2022  23:06     6,867,505,152 Sauvegarde VMs-6D2022-03-07T220020_210C.vib
    08/03/2022  23:22     4,341,936,128 Sauvegarde VMs-6D2022-03-08T220021_7EA6.vib
    09/03/2022  23:04     3,423,899,648 Sauvegarde VMs-6D2022-03-09T220027_F7B7.vib
    10/03/2022  23:33     4,052,103,168 Sauvegarde VMs-6D2022-03-10T220013_4548.vib
    11/03/2022  23:04     3,703,123,968 Sauvegarde VMs-6D2022-03-11T220022_3D0E.vib
    13/03/2022  05:10    97,497,055,232 Sauvegarde VMs-6D2022-03-12T220012_B1AB.vbk
    13/03/2022  23:03     3,414,740,992 Sauvegarde VMs-6D2022-03-13T220018_170C.vib
    14/03/2022  23:05     6,474,313,728 Sauvegarde VMs-6D2022-03-14T220028_C984.vib
    15/03/2022  23:22     5,458,710,528 Sauvegarde VMs-6D2022-03-15T220010_82B3.vib
    16/03/2022  23:05     4,924,788,736 Sauvegarde VMs-6D2022-03-16T220020_28E5.vib
    17/03/2022  23:22     4,920,000,512 Sauvegarde VMs-6D2022-03-17T220018_B5D5.vib
    18/03/2022  23:05     6,446,526,464 Sauvegarde VMs-6D2022-03-18T220025_FC06.vib
    20/03/2022  08:37    98,752,487,424 Sauvegarde VMs-6D2022-03-19T220014_FE84.vbk
    20/03/2022  23:04     5,086,494,720 Sauvegarde VMs-6D2022-03-20T220023_EB96.vib
    21/03/2022  23:04     3,926,642,688 Sauvegarde VMs-6D2022-03-21T220019_A088.vib
    22/03/2022  23:18     4,070,912,000 Sauvegarde VMs-6D2022-03-22T220025_BEA6.vib
    23/03/2022  23:05     5,829,500,928 Sauvegarde VMs-6D2022-03-23T220013_6AD9.vib
    24/03/2022  23:25     5,706,629,120 Sauvegarde VMs-6D2022-03-24T220011_06D4.vib
    25/03/2022  23:04     3,896,168,448 Sauvegarde VMs-6D2022-03-25T220022_6EB8.vib
    27/03/2022  08:21    99,488,555,008 Sauvegarde VMs-6D2022-03-26T220014_36F5.vbk
    27/03/2022  22:03     2,935,103,488 Sauvegarde VMs-6D2022-03-27T220029_8FAF.vib
    28/03/2022  22:04     4,905,390,080 Sauvegarde VMs-6D2022-03-28T220021_F96D.vib
                  32 fichier(s)   631,347,681,338 octets
    
         Total des fichiers list‚sÿ:
                  32 fichier(s)   631,347,681,338 octets
                   2 R‚p(s)  2,917,103,730,688 octets libres
    

    J'ai ce fichier à la base ou la seul chose dont je suis sur, c'est que les lignes que je voudrons enlever seront les 5 premières et les 5 dernières

    Résultat attendu :

    27/03/2022_22:03_795267_Sauvegarde-VM.vbm-
    27/02/2022_06:50_97600917504_Sauvegarde-VMs-6D2022-02-26T220014-78CA.vbk
    27/02/2022_23:05_9327566848_Sauvegarde-VMs-6D2022-02-27T220023-ECC3.vib
    28/02/2022_23:06_9850810368_Sauvegarde-VMs-6D2022-02-28T220009-9658.vib
    01/03/2022_23:46_6733135872_Sauvegarde-VMs-6D2022-03-01T220025-12C1.vib
    02/03/2022_23:04_4461498368_Sauvegarde-VMs-6D2022-03-02T220019-81E8.vib
    03/03/2022_23:22_4791119872_Sauvegarde-VMs-6D2022-03-03T220018-C1A2.vib
    04/03/2022_23:05_4503040000_Sauvegarde-VMs-6D2022-03-04T220033-39A5.vib
    06/03/2022_07:16_97297121280_Sauvegarde-VMs-6D2022-03-05T220023-8756.vbk
    06/03/2022_23:06_10659061760_Sauvegarde-VMs-6D2022-03-06T220014-A39B.vib
    07/03/2022_23:06_6867505152_Sauvegarde-VMs-6D2022-03-07T220020-210C.vib
    08/03/2022_23:22_4341936128_Sauvegarde-VMs-6D2022-03-08T220021-7EA6.vib
    09/03/2022_23:04_3423899648_Sauvegarde-VMs-6D2022-03-09T220027-F7B7.vib
    10/03/2022_23:33_4052103168_Sauvegarde-VMs-6D2022-03-10T220013-4548.vib
    11/03/2022_23:04_3703123968_Sauvegarde-VMs-6D2022-03-11T220022-3D0E.vib
    13/03/2022_05:10_97497055232_Sauvegarde-VMs-6D2022-03-12T220012-B1AB.vbk
    13/03/2022_23:03_3414740992_Sauvegarde-VMs-6D2022-03-13T220018-170C.vib
    14/03/2022_23:05_6474313728_Sauvegarde-VMs-6D2022-03-14T220028-C984.vib
    15/03/2022_23:22_5458710528_Sauvegarde-VMs-6D2022-03-15T220010-82B3.vib
    16/03/2022_23:05_4924788736_Sauvegarde-VMs-6D2022-03-16T220020-28E5.vib
    17/03/2022_23:22_4920000512_Sauvegarde-VMs-6D2022-03-17T220018-B5D5.vib
    18/03/2022_23:05_6446526464_Sauvegarde-VMs-6D2022-03-18T220025-FC06.vib
    20/03/2022_08:37_98752487424_Sauvegarde-VMs-6D2022-03-19T220014-FE84.vbk
    20/03/2022_23:04_5086494720_Sauvegarde-VMs-6D2022-03-20T220023-EB96.vib
    21/03/2022_23:04_3926642688_Sauvegarde-VMs-6D2022-03-21T220019-A088.vib
    22/03/2022_23:18_4070912000_Sauvegarde-VMs-6D2022-03-22T220025-BEA6.vib
    23/03/2022_23:05_5829500928_Sauvegarde-VMs-6D2022-03-23T220013-6AD9.vib
    24/03/2022_23:25_5706629120_Sauvegarde-VMs-6D2022-03-24T220011-06D4.vib
    25/03/2022_23:04_3896168448_Sauvegarde-VMs-6D2022-03-25T220022-6EB8.vib
    27/03/2022_08:21_99488555008_Sauvegarde-VMs-6D2022-03-26T220014-36F5.vbk
    27/03/2022_22:03_2935103488_Sauvegarde-VMs-6D2022-03-27T220029-8FAF.vib
    
    

    Voici mon code BATCH :

    @echo off
     
    SETLOCAL ENABLEDELAYEDEXPANSION
       
    for /f "skip=8 tokens=1-6 delims=_+ " %%f in (listepanel/listevm.txt) do (
        Set v=%%h
        set v=!v:,=!
        echo %%f_%%g_!v!_%%i-%%j-%%k>> "Historique/historiquevm.txt"
        )
    exit

    -
    Edité par DylanNasles2 29 mars 2022 à 16:40:36

    • Partager sur Facebook
    • Partager sur Twitter
      29 mars 2022 à 19:52:11

      Bonsoir,

      Avec findstr peut-être (l'exemple ci-dessous filtre sur la date en début de ligne) :

      @echo off
        
      SETLOCAL ENABLEDELAYEDEXPANSION
          
      for /f "skip=8 tokens=1-6 delims=_+ " %%f in ('findstr /B /R "^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] " "listepanel/listevm.txt"') do (
          Set v=%%h
          set v=!v:,=!
          echo %%f_%%g_!v!_%%i-%%j-%%k>> "Historique/historiquevm.txt"
          )
      exit
      



      • Partager sur Facebook
      • Partager sur Twitter
        30 mars 2022 à 8:43:29

        Zaibai a écrit:

        Bonsoir,

        Avec findstr peut-être (l'exemple ci-dessous filtre sur la date en début de ligne) :

        @echo off
          
        SETLOCAL ENABLEDELAYEDEXPANSION
            
        for /f "skip=8 tokens=1-6 delims=_+ " %%f in ('findstr /B /R "^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] " "listepanel/listevm.txt"') do (
            Set v=%%h
            set v=!v:,=!
            echo %%f_%%g_!v!_%%i-%%j-%%k>> "Historique/historiquevm.txt"
            )
        exit
        



        Salut, sa ne me sert un peu à rien ce code (!même si il est juste) parce que ce n'est pas ce que je demande haha ^^ !

        Mes lignes de début sont supprimer avec le SKIP, donc ce n'est pas un soucis, c'est mes lignes de fin qu'il faut supprimer, exactement je veux dire :

        "Supprimer/Ne pas lire les 5 dernières lignes" .

        • Partager sur Facebook
        • Partager sur Twitter
          30 mars 2022 à 10:34:58

          ce code donne un résultat très proche de que tu cherches. il faut juste modifier le skip=8 en skip=2, le find va renvoyer les lignes à partir du répertoire ., donc il faut sauter 2 lignes, pour sauter les lignes des répertoires . et ..
          • Partager sur Facebook
          • Partager sur Twitter
            30 mars 2022 à 10:41:19

            ça ne marche pas, je lance le programme, mais aucun fichier ne se créer
            • Partager sur Facebook
            • Partager sur Twitter
              30 mars 2022 à 11:01:39

              tu as bien supprimé ton fichier historiquevm.txt avant de lancer le script ? parce le script va rajouter les infos à la suite de ce qui était déjà présent dans ce fichier si il existe
              • Partager sur Facebook
              • Partager sur Twitter
                30 mars 2022 à 11:06:50

                J'ai essayé en le laissant, en le supprimer et en le mettant à vide, le fichier ne se créer pas (en sachant que ce serait bien qu'il le remplace au lieu de devoir le supprimer à chaque fois).
                • Partager sur Facebook
                • Partager sur Twitter
                  30 mars 2022 à 11:15:11

                  il faut supprimer le fichier en début de script ^^ 

                  Tu peux le code de ton script, que l'on joue au jeu des 7 erreurs ? :p 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 mars 2022 à 11:23:21

                    @echo off
                       
                    SETLOCAL ENABLEDELAYEDEXPANSION
                         
                    for /f "skip=2 tokens=1-6 delims=_+ " %%f in ('findstr /B /R "^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] " "listepanel/listevm.txt"') do (
                        Set v=%%h
                        set v=!v:,=!
                        echo %%f_%%g_!v!_%%i-%%j-%%k>> "Historique/historiquevm.txt"
                        )
                    exit
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 mars 2022 à 11:34:51

                      bon bah c'est bien le même 

                      Si tu tapes la commande dans l'invite de commande (en étant positionné dans le bon répertoire); ça t'affiche les lignes ou pas ou une erreur ?

                      findstr /B /R "^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] " "listepanel/listevm.txt"

                      Si pas, il doit y avoir peut-être des caractères autres qui empêche la reconnaissance du pattern (peut-être essayer sans /B et/ou sans le ^ ) 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 mars 2022 à 11:51:37

                        Voici ce que sa m'affiche 

                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 mars 2022 à 13:08:51

                          il faut que le script soit dans le répertoire contenant listepanel, comme ton script de départ, donc être dans le répertoire listeInfoSauv
                          • Partager sur Facebook
                          • Partager sur Twitter
                            30 mars 2022 à 14:27:19

                            peut-être un problème de droit ? le fichier est bien présent (même si tu as déjà du vérifier ça)

                            tu arrives à ouvrir le fichier via notepad en tapant "listepanel/listevm.txt"?
                            ton script d'origine fonctionne toujours ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                              30 mars 2022 à 14:44:46

                              Aucun problème de droit, le fichier est bien présent, j'arrive à ouvrir le fichier et l'ancien script fonctionne toujours...

                              Actuellement je ne m'attendais pas à aussi dur  ^^ .

                              • Partager sur Facebook
                              • Partager sur Twitter
                                30 mars 2022 à 14:48:32

                                étrange pour le coup, le "nouveau" script est bien lui aussi dans le même dossier listeInfoSauv ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  30 mars 2022 à 14:52:08

                                  Yes il est aussi il n'a pas bougé, c'est pour sa que je suis en détresse et ne comprend pas l'erreur...
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    30 mars 2022 à 17:09:37

                                    très étrange en effet. le dernier essai de mettre en commentaire ta ligne for en mettant REM devant et d'écrire le for avec findstr pour voir

                                    @echo off
                                      
                                    SETLOCAL ENABLEDELAYEDEXPANSION
                                        
                                    REM for /f "skip=8 tokens=1-6 delims=_+ " %%f in (listepanel/listevm.txt) do (
                                    for /f "skip=2 tokens=1-6 delims=_+ " %%f in ('findstr /B /R "^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] " "listepanel/listevm.txt"') do (
                                        Set v=%%h
                                        set v=!v:,=!
                                        echo %%f_%%g_!v!_%%i-%%j-%%k>> "Historique/historiquevm.txt"
                                        )
                                    exit



                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      30 mars 2022 à 19:33:22

                                      Bonsoir,

                                      Remplace les / par \ dans tes chemins d'accès.

                                      Exemple :

                                      C:\Users\XXX>findstr /c:"coucou" "Documents\debug.log"
                                      
                                      C:\Users\XXX>findstr /c:"coucou" "Documents/debug.log"
                                      FINDSTR : Impossible d'ouvrir debug.log



                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        31 mars 2022 à 8:36:57

                                        umfred a écrit:

                                        très étrange en effet. le dernier essai de mettre en commentaire ta ligne for en mettant REM devant et d'écrire le for avec findstr pour voir

                                        @echo off
                                          
                                        SETLOCAL ENABLEDELAYEDEXPANSION
                                            
                                        REM for /f "skip=8 tokens=1-6 delims=_+ " %%f in (listepanel/listevm.txt) do (
                                        for /f "skip=2 tokens=1-6 delims=_+ " %%f in ('findstr /B /R "^[0-9][0-9]/[0-9][0-9]/[0-9][0-9][0-9][0-9] " "listepanel/listevm.txt"') do (
                                            Set v=%%h
                                            set v=!v:,=!
                                            echo %%f_%%g_!v!_%%i-%%j-%%k>> "Historique/historiquevm.txt"
                                            )
                                        exit



                                        Je n'ai pas compris ce que tu voulais que j'essaie ???

                                        Et pour ZaiBai, oui j'ai changer les "/" par des "\" et déjà cela me créer mon fichier, mais vide à l'intérieur...

                                        **EDIT**

                                        J'ai réussi du coup !

                                        Le problème venait bien des "/", je ne pourrais pas dire comment mais ils avaient supprimé les données de listevm.txt quand j'ai activer le programme, donc le document d'après me retournait vide !!

                                        Merci beaucoup de votre aide !!

                                        -
                                        Edité par DylanNasles2 31 mars 2022 à 9:13:02

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        BATCH

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown