BBAT BATCH ON-LINE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Connexion

Récupérer mon mot de passe

Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Le record du nombre d'utilisateurs en ligne est de 29 le Mer 29 Jan 2020, 10:53
Derniers sujets
» [StackOverflow] Batch to Create video .srt Subtitles with right timing
[bat]  Tutoriel sur la creation de Progress bar en batch  EmptyVen 25 Déc 2015, 14:17 par Sachadee

» [devellopez] Formater une date en ligne Dos
[bat]  Tutoriel sur la creation de Progress bar en batch  EmptyVen 31 Juil 2015, 10:40 par Dylan Gadacha

» Un super Tuto Batch de IniTScreen
[bat]  Tutoriel sur la creation de Progress bar en batch  EmptyLun 08 Juin 2015, 12:16 par InitScreen

» Un code MATRIX sympa
[bat]  Tutoriel sur la creation de Progress bar en batch  EmptyDim 12 Avr 2015, 14:27 par Sachadee

» [BAT/EXE] DresolChange changer la sesolution de l´écran
[bat]  Tutoriel sur la creation de Progress bar en batch  EmptyMar 17 Mar 2015, 09:12 par Sachadee

» [EXE/bat] DpScript Código Delphi interpreter
[bat]  Tutoriel sur la creation de Progress bar en batch  EmptyJeu 12 Mar 2015, 15:48 par Sachadee

» Externo SaveDlg com 2 kb
[bat]  Tutoriel sur la creation de Progress bar en batch  EmptyDim 15 Fév 2015, 12:20 par Sachadee

» présentation
[bat]  Tutoriel sur la creation de Progress bar en batch  EmptyDim 15 Fév 2015, 12:14 par Sachadee

» [developpez.com] Transcodage fichier vidéo si fichier déposé
[bat]  Tutoriel sur la creation de Progress bar en batch  EmptyMar 03 Fév 2015, 01:02 par Sachadee

Flux RSS



Flag Counter
Partenaires
Le deal à ne pas rater :
Fnac : 2 Funko Pop achetées : le 3ème offert (large sélection de ...
Voir le deal

[bat] Tutoriel sur la creation de Progress bar en batch

2 participants

Aller en bas

[bat]  Tutoriel sur la creation de Progress bar en batch  Empty [bat] Tutoriel sur la creation de Progress bar en batch

Message par Sachadee Dim 15 Sep 2013, 17:01

Vu que c'est un sujet qui interesse beaucoup de monde j'ai fait un petit tuto sur les manières de traiter la barre de progression en batch.

Ces exemples complets et fonctionnels genère par eux-même une tâche (création d'un fichiers de 200´'000 octets) et montre la progression de cette création à l'aide de 2 graphes 1 de progression et l'autre de régression.
Nous testons en temps réel la taille du fichier en création.

[bat]  Tutoriel sur la creation de Progress bar en batch  899043progress1

Si vous avez des doutes ou des questions n´hésitez pas à ouvrir le débat.

Pour commencer créons un fichier progress.bat avec en entête les élèments suivants :

Code:
:::PROGRESS.BAT By SachaDee
:::www.Bbat.forumeiro.com
:::www.Dbatchscript.forumeiros.com
:::www.batch.xoo.it.com

@Echo Off
mode con: cols=120 lines=8
color 1a
setlocal EnableDelayedExpansion
ensuite nous allons emboutir le code de création de notre tâche pour faire fonctionner notre exemple.
En fait nous génerons un autre bat qui une fois lancer va créer un ficher de 200´000 octets.


Code:
::::GEMERATION DE GENERE.BAT QUI SERA NOTE TACHE POUR CETTE EXEMPLE

if not exist genere.bat  (echo @Echo Off
                          echo :::GENERATION D'un fichier de 200 000 Octest
                          echo if exist #nul#.val del #nul#.val
                          echo for /l %%%%a in ^(1=1=50000^) do echo 0 ^>^>#nul#.val)>>genere.bat
On définit les variables relative au test de ce cas, à savoir le nom du fichier que l'on va tester (#nul#.val) et la taille finale de ce même fichier qui va nous servir à définir le "Pas" de progression de notre barre de progression.

Code:
set $taille=200000
set $fichier=#nul#.val
Ici une étape crucial de notre projet la définition du "PAS" ($pas) de progression sur une echelle de 100 donc (/100)
Pour les tres gros fichiers la division ne fonctionne pas. C'est pour cela que je ne vais pas faire une divison mathèmatique mais un supression des 2 dernier caractères

Le point important :

Je vais  multiplier le "PAS" par 4 pour avoir un affichage plus fluide et pour que la création du fichier (#nul#.val) ne
soit pas 2 fois plus rapide que le défilement de notre barre de progression.
Cette valeur de 4 va influencer tout les paramètres de notre code. A savoir :

- le temps d'attente entre chaque test (ping localhost)
- le traitement du graphe (-4 caracteres en fin de ligne et rajout de 4 carctères en début)
- l'incrémentation de notre valeur % ($pc) (+4% à chaque test réussi)

vous pouvez très bien faire le même code avec un facteur 1 en rájustant toutes les variables. mais lors de l'affichage çe n'est pas très propre ç'est trop rapide donc ça clignote.

donc notre "PAS" (/100*4)

Code:
set /a $pas=%$taille:~0,-2%*4
La définition du graphe de base. Dans notre exemple j'ai fait un graphe sur 100 positions (caractères)
J'ai choisi de faire une substitution de caractère que je trouve plus ésthetique. Vous pouvez très bien mettre 100 espaces ou le caractère de votre choix.

Code:
set $graph=°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Et vu que je vais faire un graphe de régression je vais également définir ça variable ici

Code:
set $graph1=%$graph%
On définit la variable pourcentage à 0 pour le graphe de progression et à 100 pour le graphe de régression.
On définit la valeur de test de la création du fichier temporaire que l'on positionne sur la valeur du premier "PAS"
(8000 dans notre cas)

Code:
set $pc=0
set $pc1=100
set $val_temp=%$pas%
Maintenant le point important le lancement de notre tâche.
Pour pouvoir observer le traitement de notre tâche nous allons la lancer dans un processus parallèle (minimiser)
que nous allons pouvoir observer et analyser depuis notre processus.

donc :

Code:
start /min genere.bat ^& exit
Ici on affiche notre premier graphe vide :


Code:
cls
echo Taille du fichier : %~z1
echo.
echo    [%$graph%] !$pc! %% Trait‚
echo.
echo    [%$graph1%] !$pc! %% Restant
Notre tâche est lancé, nous allons donc entré dans la phase de test et affichage.

On test la taille du fichier en création (#nul#.val) si elle supérieur ou égal à notre $val_temp on incremente d'un $pas
(8000 dans notre exemple, vu que nous avons multiplier notre $pas par 4 en début de script).
si c'est le cas on invrèmente nos valeurs :

 - + 1 "PAS" (8000) pour $val_temp
 - + 4 pour notre valeur % ($pc) progression
 - - 4 pour notre valeur % ($pc1) régression
 - et traitement des graphes (- 4 carcteres en fin de strings et + 4 caractères de substitution) progression et l'inverse pour la régression.

Code:
if %~z1 geq !$val_temp! (set /a $val_temp=!$val_temp!+%$pas%
                        set /a $pc+=4
                         set /a $pc1-=4
                         set $graph=!$graph:~0,-4!
                         set $graph=²²²²!$graph!
                         set $graph1=!$graph1:~4!
                         set $graph1=!$graph1!²²²²)
L'affichage

Code:
echo    [%$graph%] !$pc! %% Trait‚
echo.
echo    [%$graph1%] !$pc1! %% Restant
Lorsque l'on arrive à 100 % on termine

Code:
if !$pc!==100 goto:termine

goto :eof

:termine
endlocal
echo Traitement termin‚
pause
exit
Et voilà

Code complet

progress.bat:

Bbat paste : http://dbatchpaste.web44.net/bbat/kMW11WjR.html

Voilà pour notre exemple complet No 1

Maintenant me direz-vous, moi je veux faire une barre de progression d'un processus dont je ne peux (ou ne veut) récuperer aucune information du type taille ou quantité. Comment faire dans ce cas là.
Dans ce cas nous allons faire une barre de progression qui est plus une bare d'attente. elle n'auras pas de fin.

[bat]  Tutoriel sur la creation de Progress bar en batch  713062progress2

Je montrerai plus tard une solution avec l'intègration d'un code HTA de mon ami Hackoo.

Pour le début le code sera le même géneration de la tâche pour votre projet vous pouvez passer cette partie elle est juste là pour avoir un exemple concret et fonctionnel.

Code:
:::PROGRESS.BAT By SachaDee
:::www.Bbat.forumeiro.com
:::www.Dbatchscript.forumeiros.com
:::www.batch.xoo.it.com
@Echo Off
mode con: cols=120 lines=7
color 1a
setlocal EnableDelayedExpansion
if not exist genere.bat  (echo @Echo Off
                          echo :::GENERATION D'un fichier de 200 000 Octest
                          echo if exist #nul#.val del #nul#.val
                          echo for /l %%%%a in ^(1=1=50000^) do echo 0 ^>^>#nul#.val)>>genere.bat
Entrons dans le vif du sujet :

Ici nous allons lancer notre tâche dans un processus parallèle de la même manière que dans l'exemple précédent sauf que cette fois nous avons besoin de savoir quand le processus va se terminer, sinon on va afficher notre barre jusqu'à la fin des temps Very Happy.

Pour ce faire nous allon simplement en fin de processus créer un fichier qui nous servira de test
(temps que le fichier n'est pas créer on incremente notre graphe d'un carctère). Trop simple non ?

Donc on test d'abord si le fichier que l'on va créer en fin de processus n'existe pas. Si il existe on le détruit.

Code:
if exist fin.val del fin.val
ensuite on lançe notre processus, et on génère le fichier témoin en fin du processus :

Code:
start /min genere.bat ^& echo.^>fin.val ^& exit
On définit notre variable graph et on affiche le premier tableau

Code:
cls
set graph=²°
echo traitement En cours veuillez patienter...
echo.
echo    %graph%
Et ensuite l'appele de la fonction où l'on test la présence de notre fichier témoin de fin du processus si il existe on termine, sinon on incremente notre graph de 1 caractère.

Code:
:affiche
>nul PING localhost -n 2 -w 1000
cls
if exist fin.val goto:termine

set graph=²!graph!
echo traitement En cours veuillez patienter...
echo.
echo    %graph%
goto:affiche

:termine
endlocal
echo Traitement termin‚
pause
exit
pogress2.bat:


Bbatpaste : http://dbatchpaste.web44.net/bbat/bYjRb7FZQ.html


Et voilà pour l'exemple complet No 2


Pour l'exemple No 3 qui est dedié à la copie de fichier.
Nous allons créer un script mixte BAT/VBS qui va récupèrer les fonction de copie windows.
Pourquoi ce compliquer la vie lorsque l'on a tout sous la main :

Je vous mets directement le code avec les explications dedans.
Attention si vous mettez  "chemin\*.*"  comme source. Il va également copié les sous répertoires (cool, non ?)

[bat]  Tutoriel sur la creation de Progress bar en batch  818178progress3


Code:
@echo off

:::ULTIMATE COPY PROGRESSBAR
:::By SachaDee (2014)
:::DEFINITION DE LA SOURCE DE COPY
:::EN METTANT *.* IL COPIE EGALEMENT LES SOUS-DOSSIERS


set $source=C:\test\*.*

:::DEFINITION DE LA DESTINATION

set $destination=d:\travail

if exist progress.vbs del progress.vbs
(echo Const ProgressBar = ^&H0^&
 echo strTargetFolder = "%$destination%"
echo Set objShell = CreateObject^(^"Shell.Application^"^)
 echo Set objFolder = objShell.NameSpace^(strTargetFolder^)
echo objFolder.CopyHere ^"%$source%^", ProgressBar) >>Progress.vbs


ECHO TRAITEMENT EN COURS VEUILLEZ PATIENTER...
ECHO.By SachaDee (2013)
call progress.vbs
ECHO Traitement termin‚

 


A venir une barre d'attente à l'aide d'un script mixte HTA et bat (Hackoo Vs SachaDee Very Happy)

LA VOILÀ :

:::// BATCH/VBS WaitBar ULTIMATE
:::// MULTIMODELE "VOUS POUVEZ INCLURE LES VOTRES"
:::// By Hackoo & SachaDee
:::// With The GIF from : http://ajaxload.info/
:::// (c) Hack&dee (2013)

[bat]  Tutoriel sur la creation de Progress bar en batch  643345BBAR1

[bat]  Tutoriel sur la creation de Progress bar en batch  785160bbar2

[bat]  Tutoriel sur la creation de Progress bar en batch  831371bbar3

[bat]  Tutoriel sur la creation de Progress bar en batch  178310bbar5

Voici un code développer en commun avec mon ami HACKOO vous avec 5 modèles de WAITINGBAR incluse emboutie dans le code
vous pouvez changer de modèle en settant la variable $model de 1 a 5 (testez 5 [bat]  Tutoriel sur la creation de Progress bar en batch  959169622)

Votre processus de opy par exemple devra être placé dans un fichier "tache.bat" et voilà indépendamment du temps de traitement vous aurez une Jolie waitBBarre qui sera affiché.

WaitBBAR.bat:

Lien BBATPASTE :
http://dbatchpaste.web44.net/bbat/AyatC1LPEM.html

Lien para Download direct :

https://docs.google.com/file/d/0B9yh04HYXto1SGhzenBpaEJHbm8/edit?usp=sharing


By SachaDee (c) 2013

[bat]  Tutoriel sur la creation de Progress bar en batch  505557867 


.......


Dernière édition par Sachadee le Jeu 20 Nov 2014, 14:49, édité 5 fois
Sachadee
Sachadee
Admin
Admin

Mensagens : 591
Data de inscrição : 04/06/2013

https://bbat.forumeiro.com

Revenir en haut Aller en bas

[bat]  Tutoriel sur la creation de Progress bar en batch  Empty Re: [bat] Tutoriel sur la creation de Progress bar en batch

Message par batchnul Ven 20 Sep 2013, 20:56

Bonsoir SachaDee,

Bravo pour le tutoriel, excellent travail.

A la lecture du code tu pourrais expliquer dans la boucle 
echo 0 ^>^>#nul#.val

Super ⭐ ⭐ ⭐ ⭐ ⭐
batchnul
batchnul
Membre
Membre

Mensagens : 65
Data de inscrição : 15/08/2013
Localização : France

Revenir en haut Aller en bas

[bat]  Tutoriel sur la creation de Progress bar en batch  Empty Re: [bat] Tutoriel sur la creation de Progress bar en batch

Message par Sachadee Ven 20 Sep 2013, 21:43

Salut batchnul,

et merci !

Pour ta question en fait je doit prendre cette partie du code dans son ensembble pour te répondre :



    Code:
    (echo @Echo Off                         
    echo :::GENERATION D'un fichier de 200 000 Octest                         
    echo if exist #nul#.val del #nul#.val                         
    echo for /l %%%%a in ^(1=1=50000^) do echo 0 ^>^>#nul#.val)>>genere.bat


je pense que se sont les ^> qui t'intrigue.
En fait on va creer un autre "bat" genere.bat qui doit contenir ce code. Mais come > est un carctere spécial je ne peux pas faire un :


Code:
echo echo 0 >>genere.bat
Ça va m'interpreter le >> et par consequent ne pas fonctionner.

Lorsque tu veux écrire des caractères spéciaux dans un batch tu dois les échapper à l'aide de ^pour la plupart et avec % pour le %.

J'espère que c'est plus ou moins clair [bat]  Tutoriel sur la creation de Progress bar en batch  959169622
Sachadee
Sachadee
Admin
Admin

Mensagens : 591
Data de inscrição : 04/06/2013

https://bbat.forumeiro.com

Revenir en haut Aller en bas

[bat]  Tutoriel sur la creation de Progress bar en batch  Empty Re: [bat] Tutoriel sur la creation de Progress bar en batch

Message par batchnul Ven 20 Sep 2013, 21:54

oui très clair 
merci et bonne soirée
batchnul
batchnul
Membre
Membre

Mensagens : 65
Data de inscrição : 15/08/2013
Localização : France

Revenir en haut Aller en bas

[bat]  Tutoriel sur la creation de Progress bar en batch  Empty Re: [bat] Tutoriel sur la creation de Progress bar en batch

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum