IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

SHA256 et barre de progression [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut SHA256 et barre de progression
    Bonjour

    J'ai la commande suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sha256deep.exe -b g:\test\*.* > g:\test\SHA256
    Est-il possible d'utiliser une barre de progression avec ce programme?

    J'ai lancé plusieurs recherches sur internet, il y a plusieurs exemples mais uniquement avec la commande xcopy et d'autres qui font parties de MS-DOS.

    J'ai testé l'exemple (trouvé sur developpez) que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    @echo off
    setlocal enabledelayedexpansion
    echo.
    echo.
    
    set i=1
    (Set /P j=COPYING) < NUL
    ECHO.
    (Set /P j=......) < NUL
    :start
    call :DisplayProgressBar %i%
    :replace the next line by the operation you want to do
    sha256deep.exe -b g:\downloads\*.* > test < NUL
    set /a i = i + 1
    if /i %i% leq 100 goto start
    ECHO.
    ECHO.
    (Set /P j=COPYING SUCCESSFULLY COMPLETED) < NUL
    ECHO.
    PAUSE>NUL
    goto :EOF
    
    :DisplayProgressBar
    (Set /P j=.) < NUL
    title %1%% Completed
    exit /b
    endlocal
    Lorsque j'exécute le script, le fichier final, je l'obtiens au bout de 60 minutes sans la barre environ 5 voir 6 minutes pas plus.

    Le plus comique, si je stoppe le script au bout de 5%, le fichier final est crée et le hash obtenu est correct

    J'ai l'impression que la barre de progression dirige (pour imager) l'exécution de la commande

    Pourriez-vous me donner un petit coup de main s'il vous plaît ?

    Merci

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    c'est parce que dans l'exemple que tu donnes, tu appelles 100 x ton programme
    sha256deep.exe. C'est clair qu'après la première fois ton fichier "test" va être créer.

    Tu pourrais traiter 1 fichier à la fois dans ta directory "download" à l'aide d'une boucle e
    à chaque itération tu incrémentes une variable d'un ou 2 carctères en plus.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @echo off
    setlocal enabledelayedexpansion enableextensions
    set barre=#
    dir /b g:\downloads\>fichier.txt
    for /f %%a in (fichier.txt) do (echo !barre!
                                             title [!barre!Traitement %%a]
                                             sha256deep.exe -b g:\downloads\%%a >> test < NUL
                                             set barre=!barre!##
                                             cls)
    :end
    
    echo terminer
    title=
    
    endlocal
    A adpter selon tes besoins tu peux calculer le nombre de fichier et afficher
    le pourcentage traité, etc..

    Amicalement

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Je tente un première approche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @echo off
    
    setlocal enabledelayedexpansion 
    setlocal enableextensions
    
    set /a files=0
    echo please wait...
    for /f %%a in ('"dir /b /a:-d "g:\downloads\*.*" 2>nul"') do (
      set /a files+=1
    )
    set /a done=0
    for /f %%b in ('"dir /b /a:-d "g:\downloads\*.*" 2>nul"') do (
    echo %done% of %files% done
    set /a done=%done%+1
      sha256deep.exe -b "g:\downloads\*.*" > test
    )
    Dans le répertoire, il 4 fichiers et j'obtiens:
    please wait...
    0 of 4 done
    0 of 4 done
    0 of 4 done
    0 of 4 done
    Cela ne s'incrémente pas

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    J'ai modifié ton code dans ta 2 ème boucle FOR, tu dois, pour incrementer ta variable "done", utiliser "!" au lieu de %.

    Et n'oublie pas de mettre 2 ">>" pour redirectionner l'output de sha256deep.exe
    sinon ä chaque itèration il va écraser la valeur prècedente.

    Et enfin incrémente ta variable après avoir traité le fichier. sinon tu affiches
    que le fichier a été traité avant que tu ne le traîte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    @echo off
    
    setlocal enabledelayedexpansion 
    setlocal enableextensions
    
    set /a files=0
    echo please wait...
    for /f %%a in ('"dir /b /a:-d "g:\downloads\*.*" 2>nul"') do (
      set /a files+=1
    )
    set /a done=0
    for /f %%b in ('"dir /b /a:-d "g:\downloads\*.*" 2>nul"') do (
    echo !done! of %files% done
      sha256deep.exe -b "g:\downloads\*.*" >> test
    set /a done=!done!+1
    )
    Amicalement

  5. #5
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Merci beaucoup cela fonctionne vraiment très bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Indy FTP (idFTP) faire une barre de progress de transfert
    Par Harry dans le forum Web & réseau
    Réponses: 4
    Dernier message: 09/07/2004, 13h15
  2. [VB.NET] Pb avec le bouton Annuler d'1 barre de progression
    Par dada1982 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/06/2004, 09h56
  3. Réponses: 12
    Dernier message: 27/05/2004, 00h13
  4. [DEBUTANT] Barre de progression
    Par pupupu dans le forum MFC
    Réponses: 4
    Dernier message: 18/01/2004, 16h47
  5. [web] Barre de Progression ASCII
    Par Red Bull dans le forum Web
    Réponses: 13
    Dernier message: 05/06/2003, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo