Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Batch] Barre de progression

Dans une boucle 'for'

Sujet résolu
    2 juillet 2011 à 19:45:33

    Bonjour à tous,

    Question 1:
    Je souhaite insérer, dans une boucle de mon batch, une barre de progression du genre :
    ProgressBar
    Si possible, sans utiliser 'cls', mais qu'elle s'exécute sur une même ligne dans la console.
    Quelqu'un aurait une idée ?

    Question 2:
    Comment connaitre en batch toujours, le nombre de ligne d'un fichier ?

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
    Il faut simplement savoir simplement les choses simples !
      2 juillet 2011 à 21:49:33

      Bonjour, dans les deux cas, tu dois te servir d'une boucle for.

      La barre de progression reste inutile puisque tu ne peux pas la faire progresser en même temps qu'un chargement, ça resterais donc une simple décoration.

      Pour compter les lignes dans un fichier, tu boucles sur le contenu du fichier et tu incrémentes une variable.
      • Partager sur Facebook
      • Partager sur Twitter
        3 juillet 2011 à 0:01:38

        Je me suis mal exprimé, il ne s'agit pas d'une barre de progression pendant un chargement, mais à l'intérieur d'une boucle "for". Connaissant le nombre d'itération total, je souhaite juste afficher l'avancement du truc.
        Merci de ton aide
        • Partager sur Facebook
        • Partager sur Twitter
        Il faut simplement savoir simplement les choses simples !
          3 juillet 2011 à 11:07:45

          @echo off
          setlocal enableDelayedExpansion
          for /l %%I in (1,1,50) do (
               cls
               set progres=
               set /a barre=%%I*2
               echo !barre!
               for /l %%A in (1,1,%%I) do (
                    set progres=!progres!Û
               )
               echo !progres!
               ping localhost -n 1>nul
          )
          


          Il y a un cls dans le code, si tu n'en veux aucun, tu devras t'orienter vers une commande externe permettant d'afficher quelque chose à une position donnée.
          Maintenant à toi d'adapter.

          Je te laisse chercher pour la deuxième question. Renseigne toi sur for /f.
          • Partager sur Facebook
          • Partager sur Twitter
            4 juillet 2011 à 11:20:55

            Bonjour,


            Pour la première question, voici un exemple trouvé sur internet sans la commande 'cls' mais ce n'est pas très beau du tout, et pas de boucle 'for' :-° :
            @echo off
            setlocal enabledelayedexpansion
            echo.
            echo.
            set i=10
            (Set /P j=DoingStuff) < NUL
            ECHO.
            (Set /P j=......................................) < NUL
            :Start
            call :DisplayProgressBar %i%
            :replace the next line by the operation you want to do
            
            set /a i = i + 1
            if /i %i% leq 100 goto start
            ECHO.
            ECHO.
            (Set /P j=Success!) < NUL
            ECHO.
            PAUSE>NUL
            goto :EOF
            
            :DisplayProgressBar
            (Set /P j=.) < NUL
            title %1%% Completed
            exit /b
            endlocal
            

            Biensûr, ce n'est que de la décoration

            Pour la seconde question : ici
            Bonus: Une FAQ Batch
            • Partager sur Facebook
            • Partager sur Twitter
              20 juillet 2011 à 20:02:52

              Tufanik et Zaibai,

              Je vous remercie de l'aide que vous m'avez apportée.
              J'ai continué ma recherche de mon coté, et j'ai trouvé qqch de très similaire à la solution de Zaibai :
              SETLOCAL ENABLEDELAYEDEXPANSION
              
              for /f %%i in (%RECH%) do (
                  set /A c+=1
                  set /A p=100*!c!/!n!
                  CALL :ProgressBar !p!
                  rem Exécution de mon p'tit bazar
              )
              
              :ProgressBar
              TITLE PDF-Maker (%1%% completed)
              rem Sorti du script en cours
              EXIT /b
              rem Repositionne la valeur SetLocal comme elle était en début de prog.
              ENDLOCAL
              


              Zaibai, tu dis que "ce n'est pas très beau du tout", mais moi ça me convient parfaitement : L'évolution du pourcentage dans la barre de titre ... Classe !

              Re un grand merci à tous !

              Olivier
              • Partager sur Facebook
              • Partager sur Twitter
              Il faut simplement savoir simplement les choses simples !
                5 janvier 2014 à 14:50:44

                Bonjour,

                La solution suivante me conviendrait, mais je ne sais pas comment l'intégrer dans ma boucle existante, pouvez-vous m'y aider svp ?

                Quelque chose me gêne, je ne trouve pas de correspondance !n! dans le code d'Olivier.

                Ce que j'ai tenté mais j'obtiens le message "Opérande manquante".

                echo off
                
                SETLOCAL ENABLEDELAYEDEXPANSION
                 
                for %%F in (*.msu) do (
                set /A c+=1
                set /A p=100*!c!/!n!
                CALL :ProgressBar !p!
                rem Exécution de mon p'tit bazar
                wusa.exe %%F /quiet /norestart
                )
                 
                :ProgressBar
                TITLE PDF-Maker (%1%% completed)
                rem Sorti du script en cours
                EXIT /b
                rem Repositionne la valeur SetLocal comme elle était en début de prog.
                ENDLOCAL
                

                Merci pour votre aide

                -
                Edité par elricklandon 11 janvier 2014 à 13:57:14

                • Partager sur Facebook
                • Partager sur Twitter
                  11 janvier 2014 à 13:46:47

                  uP

                  -
                  Edité par elricklandon 11 janvier 2014 à 13:47:49

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 décembre 2016 à 17:09:33

                    Bonjour si vous voulais voici ce que j'utilise pour mes barre de progressions :

                    @echo off
                    title Chargement en cours... Veuillez patienter.
                    mode con cols=65 lines=9 &color 1A
                    :: stryk@live.fr
                    set NB_BAR=0
                    :UP_BAR
                    cls
                    set /a FULL = FULL + 1
                    set BAR=%BAR%Û
                    set /a NB_BAR = NB_BAR + 2
                    echo.
                    echo.
                    echo Chargement .... %NB_BAR%%%
                    echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
                    echo %BAR%
                    echo %BAR%
                    echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
                    echo.
                    if %FULL%==50 goto :END_BAR
                    @ping localhost -n 1 >nul
                    goto :UP_BAR
                    :END_BAR
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 décembre 2017 à 3:34:10

                      moi ma méthode est plus complexe mais elle est cool.

                      echo off
                      mode con cols=34 lines=5 &color 04
                      cls
                      title chargement. 1%%%
                      echo.
                      echo.
                      echo 	Û
                      echo 	Û
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement.. 23%%%
                      echo.
                      echo.
                      echo 	ÛÛ
                      echo 	ÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement... 32%%%
                      echo.
                      echo.
                      echo 	ÛÛÛ
                      echo 	ÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement. 33%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛ
                      echo 	ÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement.. 37%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛ
                      echo 	ÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement... 40%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement. 48%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement.. 51%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement... 56%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement. 63%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement.. 76%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement... 78%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement. 83%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement.. 84%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement... 85%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement. 90%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement.. 93%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement... 98%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      cls
                      title chargement. 100%%%
                      echo.
                      echo.
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      echo 	ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
                      ping localhost -n 2.5 >nul
                      title 100%%% terminer
                      mode con cols=34 lines=6
                      echo.
                      echo =====================
                      echo  chargement terminer
                      echo =====================
                      echo.
                      echo clic sur entre pour quitte
                      pause>nul
                      
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        18 août 2019 à 11:35:44

                        0

                        -
                        Edité par Anonyme 31 octobre 2023 à 14:42:02

                        • Partager sur Facebook
                        • Partager sur Twitter

                        [Batch] Barre de progression

                        × 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