Xcopy AVEC barre de progression (batch)

Neizhan Messages postés 2 Statut Membre -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je souhaiterai avoir une barre de progression pour une commande Xcopy (fichier bat).
J'ai trouvé cette "progress bar" qui correspond à mes attentes :

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 encours: %NB_BAR%%%
echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo %BAR%
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo.
if %FULL%==50 goto :END_BAR
@ping localhost -n 1 >nul
Xcopy /Y "Dossier1" "Dossier2" /e /i
goto :UP_BAR
:END_BAR

Cependant, il y a un gros problème :
Dans un test de copie en pur Xcopy des fichiers sont copiés en 10s.
Dans ce même test avec la barre de progression, cela prend beaucoup, beaucoup plus de temps (mais la barre fonctionne).
J'ai remarqué en fait que le Xcopy est exécuté plusieurs fois pour faire avancer la barre (d'où la durée plus importante et l'inutilité de ce procédé).
Y a t-il un moyen de remédier à ce problème ?

Merci
    • A quoi sert la ligne "@ping localhost -n 1 >nul" car avec ou sans, cela ne change rien.

2 réponses

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    Bonjour,

    @ping localhost -n 1 >nul
    correspond à une pseudo-temporisation d'1 seconde.
    0
  2. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    Effectivement le XCOPY était exécuté plusieurs fois, j'ai résolu le problème :

    @echo off
    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 Progression : %NB_BAR%%%
    echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
    echo %BAR%
    echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
    echo.
    if %FULL%==50 (goto :END_BAR)
    @ping localhost -n 1 >nul
    if %FULL% GTR 1 (goto :UP_BAR)
    xcopy /Y "Dossier1" "Dossier2" /e /i
    goto :UP_BAR
    :END_BAR
    0
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
       
      C'est très joli mais ça ne peut pas fonctionner, dommage.
      0
    2. Neizhan Messages postés 2 Statut Membre
       
      Bonjour,

      Merci Barnabe0057 pour ta participation.

      Oui en effet, le dernier code fonctionne mieux, cependant cela semble être une illusion ce genre de barre. Dans le code on commence avec 2% et fini à 100% uniquement lorsque tout est copié (pas d'évolution). Je suis d'accord, c'est beau mais inutile.

      Y aurait-il (toujours avec Xcopy), le moyen d'afficher un espèce de sablier ou quelque chose qui indique que la fenêtre est en action (hormis les lignes de copie) ?
      Cela pourrait me suffire...

      Merci encore !
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > Neizhan Messages postés 2 Statut Membre
         
        Pas à ma connaissance.
        0