Batch: pourcentage de progression

Résolu
Bonjour,

Je veux améliorer mon script Batch en affichant le pourcentage de progression (d'une boucle for) je ne sais pas comment faire ? Dessous l'exemple de la boucle :

for /f "delims=" %%a in ('type file1.txt') do (
echo %%a>>file2.txt
)

Comment faire pour afficher le pourcentage de progression d'extraction de file2.txt au lieu de curseur de console.

Merci d'avance pour votre aide

5 réponses

  1. salut ;)

    pourquoi pas ceci :

    @echo off

    for /L %%i in (0,10,90) do (
    cls
    echo.
    echo Effectu': %%i %%
    ping 127.0.0.1 -n 2 > NUL
    )

    cls
    echo.
    echo Effectu': 100 %%
    echo.
    pause


    ou ceci :

    @echo off

    echo ceci est un test
    echo.
    echo ???????????????????????????????????????»
    ECHO ? ?
    echo ? ceci est un test ?
    ECHO ? ?
    echo ???????????????????????????????????????¼
    echo.
    SET load=
    SET /A loadnum=0

    :Loading
    set /p "=>" <nul
    PING -n 2 localhost >nul
    SET /A loadnum+=1
    IF not %loadnum% EQU 30 GOTO :loading
    echo.
    pause



    ;)
    1. Bonjour,

      merci pour votre proposition, mais mon souci c'est que je ne sais pas comment l'implémenter dans une boucle comme ceci :

      for /f "delims=" %%a in ('type file1.txt') do (
      echo %%a>>file2.txt
      )

      si je met ta proposition après l'exécution de la boucle ça n a pas de sens puisque l'extraction de fichier file2 ce fait dans plus de 2min et le pourcentage de progression vient après rapidement (30secondes) de même si je le met avant ou à l'intérieure de la boucle ... soit que je ne sais pas comment faire soit que j'ai mal exprimer mon besoin ...

      J y ai pensé à une idée on prenant en considération la solution de karirovax, :

      1-d'abord comment exécuté les deux boucles à la fois çàd la boucle de pourcentage de progression et la boucle de l'extraction de fichier txt

      2-mettre en place un petit calcule qui nous permettre d'être bien précis sur le
      nombre de ping par seconde autrement dit si le batch traite 100 lignes/seconde et que le fichier sources contient 10000 lignes dans ce cas en à besoin de 1ping par seconde soit 100 seconde en total.

      j'espère d'être un peut claire cette fois ci
      merci de votre aide.
      1. Re, bonjour

        et comme ça : ( pour 120 secondes = 2 minutes )

        for /f "delims=" %%a in ('type file1.txt') do (
        for /L %%i in (0,1,120) do (
        cls
        echo.
        echo %%a>>file2.txt
        echo Effectu': %%i %%
        ping 127.0.0.1 -n 2 > NUL
        )
        )
        cls
        echo.
        echo Effectu': 100 %%
        echo.
        pause
    2. Bonjour,

      merci pour votre réponse, j'ai testé le scripte dessous mes remarques :
      -Des bips pour chaque ping, comment faire pour les désactivés
      -le contenu de fichier résulte (file2) est multiplié 120 fois donc lentement de traitement
      1. Re, bonsoir

        pour la supprition des beep donc il suffit de supprimer les .
        pour la multiplication :

        for /f "delims=" %%a in ('type file1.txt') do (
        for /L %%i in (0,1,120) do (
        cls
        echo.
        echo Effectu': %%i %%
        ping 127.0.0.1 -n 2 > NUL
        )
        echo %%a>>file2.txt

        )
        cls
        echo.
        echo Effectu': 100 %%
        echo.
        pause
    3. Bonsoir,

      merci karirovax pour votre aide, c'est bon pour le bip ainsi que les lignes multiple, par contre y tjrs mais :
      le cycle de pourcentage de progression s'exécute pour chaque ligne.

      merci pour votre aide.
      1. Re,

        et avec ceci :

        @echo off
        SET load=
        SET /A loadnum=0

        :Loading
        set /p "=#" <nul

        PING -n 2 localhost >nul
        SET /A loadnum+=1
        IF not %loadnum% EQU 120 GOTO :loading
        for /f "delims=" %%a in ('type file1.txt') do (
        echo %%a>>file2.txt
        )
        cls
        echo.
        echo Termin'e avec succ'
        echo.
        pause
    4. Bonjour,

      merci karirovax cette fois ci c'est bon l'exportation s'est déroulé avec succès un peu de lentement mais c'est normal puisque il s'agit d'une boucle

      merci infiniment
      je déclare cette question close
      1. Re, bonjour

        de rien , je suis içi pour tout le monde ;)