Calcul sur les heures sous DOS

jeefreeze Messages postés 13 Statut Membre -  
jeefreeze Messages postés 13 Statut Membre -
Bonjour,
Je cherche un peu partout des infos sur la création de fichier .bat, afin d'assurer la sauvegarde de mes archives sur le réseau
Ce fichier .bat est ensuite automatiquement lancé la nuit, via le gestionnaire de tâches ....
Bon je suis neu neu dans ce domaine, mais avec un peu de logique et d'astuces on arrive "presque" à ces fins.
Ceci dit je me heurte à un petit problème de calcul .... avant toutes choses voilà le code

@echo off
ECHO.
ECHO ************************************************
ECHO * *
ECHO * SAUVEGARDE ARCHIVES LOTUS VERS M: EN COURS *
ECHO * *
ECHO ************************************************
ECHO.
set debut=%TIME%
ECHO Debut de la sauvegarde a: %debut%
C:
cd Program Files
cd lotus
cd notes
cd data
cd archive
@xcopy *.* M:\Sauvegarde_Archives_LOTUS\ /Q /E /R /Y /I
ECHO.
ECHO ***********************************************
ECHO * *
ECHO * SAUVEGARDE ARCHIVES LOTUS SUR M: TERMINEE *
ECHO * *
ECHO ***********************************************
ECHO.
set fin=%TIME%
ECHO Fin de la sauvegarde a: %fin%
set /a duree=%fin%-%debut%
ECHO Duree de la sauvegarde : %duree%
pause


La pose finale me permet le matin en arrivant de contrôler que le script c'est bien lancé pendant la nuit

Donc voilà le problème
Au début je stocke l'heure de début dans la variable %début% et l'heure de fin dans la variable %fin%
Ensuite je veux faire la différence entre les deux en stockant le résultat dans la variable %duree% par la commande

set /a duree=%fin%-%debut%

.... mais ça marche pas

Pour info voila le résultat: http://cjoint.com/data/iktVpdHxZR_Resultat.jpg

1- Auriez-vous l'info qui me permette d'obtenir le résultat au format heure (ex: 01:02:53.26)
2- Question subsidiaire. Comment pendant la sauvegarde avoir une petite animation simple qui m'indique que la routine est en cours ?
Car, ne voulant pas afficher le nom des fichiers sauvegardés, on ne vois pas la routine tourner, seul le prompt clignote

Merci par avance
Configuration: Windows XP Internet Explorer 7.0

10 réponses

  1. jeefreeze Messages postés 13 Statut Membre
     
    Bonjour,
    Petit Up au cas ou
    A+
    0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    ce bout de code va ouvrir une fenetre, afficher l'arborescence des dossiers de M:\Sauvegarde_Archives_LOTUS toute les 10 secs tant que le xcopy tourne

    del /q LOCK 2> NUL
    start cmd /c "for /l %a in (1,1,10000) do (@tree M:\Sauvegarde_Archives_LOTUS & @ping -n 10 127.0.0.1 > NUL & if exist LOCK exit /b)"
    @xcopy *.* M:\Sauvegarde_Archives_LOTUS\ /Q /E /R /Y /I
    echo. > LOCK
    0
  3. jeefreeze Messages postés 13 Statut Membre
     
    Salut dubcek
    Merci pour cette amélioration .... mais et oui il y a un "mais" ..... En dehors du gait que je n'y cmprend rien, ça marche pas ou j'ai pas su la mettre en applications

    J'ai écris
    REM -------- SAUVEGARDE ARCHIVES LOTUS ---------
    ECHO - SAUVEGARDE ARCHIVES LOTUS EN COURS -
    del /q LOCK 2> NUL
    start cmd /c "for /l %a in (1,1,10000) do (@tree M:\Sauvegarde_Archives_LOTUS & @ping -n 10 127.0.0.1 > NUL & if exist LOCK exit /b)"
    @xcopy C:\Program Files\lotus\notes\data\archive M:\Sauvegarde_Archives_LOTUS /Q /E /R /Y /I
    echo. > LOCK
    ECHO - SAUVEGARDE ARCHIVES LOTUS TERMINEE -


    J'ai le renvoi suivant
    - SAUVEGARDE ARCHIVES LOTUS EN COURS -
    Nombre de paramètres non valide
    - SAUVEGARDE ARCHIVES LOTUS TERMINEE -


    Merci
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    j'ai testé interactivement, alors il manque un % pour %%a dans un .bat:
    start cmd /c "for /l %%a in (1,1,10000) do (@tree M:\Sauvegarde_Archives_LOTUS & @ping -n 10 127.0.0.1 > NUL & if exist LOCK exit /b)"
    0
  6. jeefreeze Messages postés 13 Statut Membre
     
    Re
    Effectivement ça marche .... mais j'ai toujurs rien compris. Appliquer sans savoir ça me dérange
    Faut je j'essaye de comprendre (ça peu être utile pour autre chose voir débuger au besoin)

    Question N°1:
    Un petit fichier (Lock) sans extention se créer sur le lieu ou se trouve mon batch ?? Pourquoi ??

    Question N°2
    Que viens faire la fonction ping là dedans ??

    [Edit] Oups, j'ai compris .... c'est une pause
    https://forums.commentcamarche.net/forum/affich-1264217-commande-ms-dos-pour-inserer-une-pause

    Merci bien
    0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    tu as raison

    # on supprime le fichier lock (n'importe quel nom) en ignorant le message si il n'existe pas
    del /q LOCK 2> NUL

    # on démarre une boucle longue (10000) en exécutant tree
    start cmd /c "for /l %a in (1,1,10000) do (@tree M:\Sauvegarde_Archives_LOTUS

    # le ping sert juste à attendre 10s, c'est plus simple qu'une boucle
    @ping -n 10 127.0.0.1 > NUL

    # tant que le fichier lock n'existe pas, xcopy tourne toujours, donc on boucle
    if exist LOCK exit /b)"

    # xcopy terminant, on crée un fichier lock donc la boucle va terminer
    @xcopy .........
    echo. > LOCK
    0
  8. jeefreeze Messages postés 13 Statut Membre
     
    Re

    Ah !! en effet ça deviens plus clair ... mais j'avais un peu avancé.
    Je reste géné sur la synthaxe le %%a par exemple je sais pas à quoi il sert ....

    Merci pour ton aide
    A+
    0
  9. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    c'est une boucle, %%a prend la valeur 1, jusqu'a 10000, par pas de 1
    for /l %a in (1,1,10000) do ...

    essaye for /l %a in (1,1,10) do echo %a
    avec %%a dans un .bat

    j'aurais aussi pu faire une boucle infinie
    :x
    tree ...
    goto x
    0
  10. jeefreeze Messages postés 13 Statut Membre
     
    Merci dubeck
    je commence à saisir ... mais il faut que je pratique :o)
    A+
    0