[résolu]Calcul avec Batch

Calcul avec Batch [résolu] - Shell/Batch - Programmation

Marsh Posté le 03-06-2007 à 15:46:20    

Salut à vous ,
Je débute en batch , et je voudrais faire un petit programme qui , si on lui donne une durée , éteint l'ordi au bout du temps donné . Pour ça j'ai essayé de convertir des heures et des minutes en secondes pour associer le nombre de secondes trouvées à un shutdown .

 

Voila mon code :

 


Code :
  1. @echo off
  2. echo Eteindre l'ordinateur dans combien de temps ?
  3. echo.
  4. set /p h=Nombre d'heures ?
  5. echo.
  6. set /p m=Nombre de minutes ?
  7. echo.
  8. set /p s=Nombre de secondes ?
  9. echo.
  10. set /p t=(%h%*3600)+(%m%*60)+%s%
  11. echo.
  12. shutdown -r -t %t% -m
  13. echo.
  14. Pause
 

Mon problème se trouve au niveau de la ligne de calcul "set /p t=(%h%*3600)+(%m%*60)+%s%" : Je sais pas comment éxécuter le calcul en batch .
Plz help !

Message cité 1 fois
Message édité par cybkiller le 08-06-2007 à 11:04:12
Reply

Marsh Posté le 03-06-2007 à 15:46:20   

Reply

Marsh Posté le 03-06-2007 à 16:50:34    

set /a
 
set /? pour plus d'infos.

Reply

Marsh Posté le 03-06-2007 à 19:51:44    

Salut nglechau ,  
 
j'ai essayé avec set /a , il me fait une erreur , avec "set /?" aussi .

Reply

Marsh Posté le 04-06-2007 à 03:50:39    

set /? est pour lire l'aide de Windows ;)

Reply

Marsh Posté le 04-06-2007 à 09:53:03    

Télécharge la commande sleep

Reply

Marsh Posté le 04-06-2007 à 14:50:27    

Alors j'ai essayé le set /? , ça m'apprend beaucoup de chose , mais ça marche pas même apres multiples essais de syntaxe ... Je rame . J'ai essayé de trouver des sources de calculatrices sur google , mais les idées de google sont infructueuses :(

Reply

Marsh Posté le 04-06-2007 à 17:10:48    

cybkiller a écrit :


Mon problème se trouve au niveau de la ligne de calcul "set /p t=(%h%*3600)+(%m%*60)+%s%" : Je sais pas comment éxécuter le calcul en batch .


 


 

Code :
  1. set /a t=(%h%*3600)+(%m%*60)+%s%
  2. echo %t%


 
;)

Reply

Marsh Posté le 04-06-2007 à 18:30:41    

Merci nglechau , mon problème est résolu ... mais m'en amène un autre :grrr:
 

Citation :


@echo off
echo Eteindre l'ordinateur dans combien de temps ?
echo.
set /p h=Nombre d'heures ?
echo.
set /p m=Nombre de minutes ?
echo.
set /p s=Nombre de secondes ?
echo.
set /a t=(%h%*3600)+(%m%*60)+%s%
echo %t% secondes avant extinction .
echo.
set /p c=Continuer ? (O/N)  
---------------------------------------
A partir de cet endroit , le bat coupe sans éxécuter ce qui suit .
---------------------------------------
if %c%=o shutdown -r -t %t%
if %c%=n echo Au revoir !
Pause


 
Je me suis peut etre trompé dans les conditions ?

Reply

Marsh Posté le 05-06-2007 à 09:07:31    

Je vois deux choses expliquant ton problème :

  • L'opérateur de test d'égalité de chaînes est == et non pas =
  • Tu testes le réponse en minuscule (o et n) alors que quand tu poses la question tu indiques qu'elle doit être en majuscule (O/N). Pour ne pas tenir compte de la casse, utilise le commutateur /I sur tes commandes IF.


Jean-Pierre.

Reply

Marsh Posté le 05-06-2007 à 16:18:30    

Exact ;)
 
if /?
le prouve.
 
N'oublie pas de considerer le cas ou l'utilisateur valide directement sans rentrer au moins un caractere.

Reply

Marsh Posté le 05-06-2007 à 16:18:30   

Reply

Marsh Posté le 08-06-2007 à 11:03:51    

Ca marche , j'envoie le code :
 

Code :
  1. @echo off
  2. :debut
  3. echo Eteindre l'ordinateur dans combien de temps ?
  4. echo.
  5. set /p h=Nombre d'heures ?
  6. echo.
  7. set /p m=Nombre de minutes ?
  8. echo.
  9. set /p s=Nombre de secondes ?
  10. echo.
  11. set /a t=(%h%*3600)+(%m%*60)+%s%
  12. echo %t% secondes avant extinction .
  13. echo.
  14. set /p c=Continuer ? (O/N)
  15. if /i %c%==o goto shut
  16. if /i %c%==n goto non
  17. goto erreur
  18. :erreur
  19. echo Entrez une réponse valide .
  20. :shut
  21. shutdown -r -t %t%
  22. :non
  23. echo Au revoir !
  24. Pause


 
Voila , merci à tous !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed