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.
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
Il faut simplement savoir simplement les choses simples !
@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.
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
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
Il faut simplement savoir simplement les choses simples !
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
× 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.