Demande d'aide sous batch

Bonjour,

si klk1 peut m'aider svp
j'ai un fichier ki s'appel zzz2010121369857 et je veux extraire seulement la date 20101213 à partir de ce nom,
si klk1 peut me faire un script sous dos pour realiser sa
et merci d'avance

18 réponses

  1. Contributeur
    hello
    C:> set nom=zzz2010121369857
    
    C:> echo %nom:~3,8%
    20101213
    
    C:>
    0
    1. merci pour ta reponse
      mais moi j'ai plusieurs fichier donc je dois faire une boucle,
      par exemple j'ai un dossier qui s'appel test et j'ai plusieurs fichier excel .xsl
      et je veut extraire seulement la date (zzz201001121547=20100112)
      et merci d'avance
      0
      1. Contributeur
        une boucle comme ça
        @echo off
        
        setlocal enableDelayedExpansion
        for /f "delims=" %%a in ('dir /b zz*.xls') do (
        set nom=%%a
        echo !nom:~3,8!
        )
        
        0
        1. svp mnt quand jé recuperé la date du fichier je veux supprimer tt les fichier .xls qui ont une date<2009(datesysteme-12)
          svp tu peut me faire le scipt qui fait sa
          et merci d'avance
          0
          1. Contributeur
            tu remplaces la commande echo par ta commande de suppression.
            !!! tu fais des tests et des sauvegardes avant !!!
            @echo off
            
            setlocal enableDelayedExpansion
            set /a annee=%date:~6,4%-1
            for /f "delims=" %%a in ('dir /b zzz*.xls') do (
            set nom=%%a
            set /a anneefichier=!nom:~3,4!
            if !anneefichier! LEQ !annee! echo !nom!
            )
            0
            1. nn sa veut marcher mon frer il me donne missing operande
              ché po ya une erreur klk part ché po moi si tu peut me rectifier ce prog et merci bcp,et stp essai ché toi si sa marche ou po,tu crée un dossier et tu met 3 fichier excel et essai stp ok
              0
              1. Contributeur
                pas de language SMS
                C:> dir /b
                zzz200801121547.xls
                zzz200901121547.xls
                zzz201001121547.xls
                zzz2010121369857.xls
                
                C:> ..\bb
                zzz200801121547.xls
                zzz200901121547.xls
                
                C:> type ..\bb.bat
                @echo off
                
                setlocal enableDelayedExpansion
                set /a annee=%date:~6,4%-1
                for /f "delims=" %%a in ('dir /b zzz*.xls') do (
                set nom=%%a
                set /a anneefichier=!nom:~3,4!
                if !anneefichier! LEQ !annee! echo !nom!
                )
                C:>
                0
            2. bnjr
              d'abord Merci beaucoup pour ta reponse c'est tres gentil
              stp maintenant je veux ke le message (appuyer sur une touche pour continuer),je voulais qu'il disparait ,comment je vais faire? et merci pour ta reponse
              0
              1. bon,quand il termine l'execution il m'affiche appuyer sur une touche pour continuer,parceke jé mis pause dans le script,mantenant je veux ke le message disparait carement,c'est a dire quand j'execute il va faire le traitement du script et aprés il revient au c:>documents and settings\user>
                tu ma compris maintenant,je sais pas quoi faire???
                0
                1. Contributeur
                  enlever la commande pause du script, il se terminera à la dernière ligne.
                  ou si tu veux quand même voir le messge sans qu'il s'arrête
                  C:> echo | pause 
                  Appuyez sur une touche pour continuer... 
                  
                  C:>
                  0
                  1. oui c'est ce que je veux,mais je veux pas que le message apparait,si tu peut enlever le message,il termine sans message,je doit faire quoi stp ???
                    0
                    1. c'est bon je lé trouvé merci bcp pr ton aide
                      c'est: echo |pause>nul
                      merci pour tt ;)
                      0
                      1. Contributeur
                        enlève la commande pause
                        0
                        1. c'est obligé pause pour que je puisse rester dans la ligne de commande
                          0
                          1. Contributeur
                            comment est-ce que tu démarres ton script ?
                            si tu veux rester en ligne de ccmmande à la fin du script, met cmd à la place de pause
                            0
                            1. mais la sa a marché avec pause
                              code:
                              echo |pause>nul
                              j'ai ajouter nul pour qu'il m'affiche rien et je reste dans la ligne tu vois,donc c applicable
                              0
                              1. Contributeur
                                cette commande ne fait rien, ça ne doit pas être ça le problème
                                0
                                1. nn j'ai aucun probleme maintenant
                                  0
                                  1. salut

                                    si vous faites un double clic sur votre fichier de commande ( batch ) , dans ce cas oui , il faut un pause comme ceci :

                                    pause|echo C'est termin'e
                                    ou
                                    pause|echo C'est termin'e>nul

                                    mais si vous travaillez sur l'invite de commandes ( CMD ) " en tappant directement a la console Ms-Dos" là la commande PAUSE n'a pas d'importance

                                    karirovax ;)
                                    0