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
A voir également:

10 réponses

jeefreeze Messages postés 13 Statut Membre
 
Bonjour,
Petit Up au cas ou
A+
0
jeefreeze Messages postés 13 Statut Membre
 
Bonjour,
J'ai finalement réussi ce que je voulais ..... voir : https://www.batcher.fr/forum/viewtopic.php?f=6&t=192

A+
0
dubcek Messages postés 18795 Date d'inscription   Statut Contributeur Dernière intervention   5 648
 
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18795 Date d'inscription   Statut Contributeur Dernière intervention   5 648
 
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
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
dubcek Messages postés 18795 Date d'inscription   Statut Contributeur Dernière intervention   5 648
 
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
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
dubcek Messages postés 18795 Date d'inscription   Statut Contributeur Dernière intervention   5 648
 
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
jeefreeze Messages postés 13 Statut Membre
 
Merci dubeck
je commence à saisir ... mais il faut que je pratique :o)
A+
0