Xcopy AVEC barre de progression (batch)

Fermé
Neizhan Messages postés 2 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 16 mars 2017 - Modifié par Neizhan le 14/03/2017 à 13:55
barnabe0057 Messages postés 14439 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 14 avril 2024 - 16 mars 2017 à 15:27
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.
A voir également:

2 réponses

barnabe0057 Messages postés 14439 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 14 avril 2024 4 905
Modifié par barnabe0057 le 15/03/2017 à 17:07
Bonjour,

@ping localhost -n 1 >nul
correspond à une pseudo-temporisation d'1 seconde.
0
barnabe0057 Messages postés 14439 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 14 avril 2024 4 905
Modifié par barnabe0057 le 15/03/2017 à 17:20
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
barnabe0057 Messages postés 14439 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 14 avril 2024 4 905
15 mars 2017 à 17:33
C'est très joli mais ça ne peut pas fonctionner, dommage.
0
Neizhan Messages postés 2 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 16 mars 2017
16 mars 2017 à 14:42
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
barnabe0057 Messages postés 14439 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 14 avril 2024 4 905 > Neizhan Messages postés 2 Date d'inscription vendredi 17 décembre 2010 Statut Membre Dernière intervention 16 mars 2017
16 mars 2017 à 15:27
Pas à ma connaissance.
0