DOS : Attendre sans consommer 100% de l'UC

DOS : Attendre sans consommer 100% de l'UC - Shell/Batch - Programmation

Marsh Posté le 06-09-2012 à 12:29:50    

Bonjour,
 
J'ai une application métier qui nécessite Oracle.
 
1 - J'ai un script qui installe oracle de façon personnalisé
2 - J'ai un script qui installe mon applicatif métier
 
Je souhaite automatiser tout cela via un script DOS qui doit faire appel au script d'installation d'Oracle
 
je l'appel avec "call oracle.cmd"
 
Et c'est la que ça coince car le script n'attend pas de lui même la fin de l'installation d'Oracle.  
Il enquille toute de suite sur l'installation de l'applicatif métier ce qui provoque nombre d'erreur !!!  :pfff:  
 
===> Pour palier à ce problème, je génère donc un petit fichier flag "ora11.flg" en fin d'installation d'Oracle
===> et dans mon script principal je fait une boucle

Code :
  1. call oracle.cmd
  2. :attendre
  3. if not exist "%systemdrive%\ora11.flg" goto attendre
  4. call app_metier.cmd


 
 
 
ça fonctionne bien, mais cette maudite boucle d'attente utilise le processeur à 100%, ce qui ralentit considérablement l'installation d'Oracle.
 
Je ne suis pas sûre que l'on puisse faire proprement ce genre de chose sous DOS.
 
Auriez-vous une solution alternative à mon problème ?

Reply

Marsh Posté le 06-09-2012 à 12:29:50   

Reply

Marsh Posté le 06-09-2012 à 16:09:30    

lancer l'install avec start /wait oracle.cmd ça marcherai pas ?

Reply

Marsh Posté le 06-09-2012 à 17:19:50    

Non ça ne marche pas, j'avais essayé déjà

Reply

Marsh Posté le 06-09-2012 à 20:12:05    

Et sinon, utiliser la commande TIMEOUT dans la boucle ?
 

Code :
  1. call oracle.cmd
  2. :attendre
  3. TIMEOUT /T 30 /NOBREAK
  4. if not exist "%systemdrive%\ora11.flg" goto attendre
  5. call app_metier.cmd


Là, toutes les 30 secondes on va vérifier si le fichier existe, si pas là, on retourne à attendre.

Reply

Marsh Posté le 06-09-2012 à 20:27:18    

Ah je ne connaissais pas cette commande. Je testerais dès demain. merci

Reply

Marsh Posté le 13-09-2012 à 00:03:15    

L'astuce classique pour attendre en batch (utile seulement pour les vieux bouzins qui n'ont pas TIMEOUT):

Code :
  1. PING -n 5 127.0.0.1 >NUL

Reply

Marsh Posté le 13-09-2012 à 08:50:19    

le coup du PING je connaissais mais il faut connaître le temps a peu près exact et du coup si l'opération prend un peu trop de temps, je me retrouve quand même avec un plantage. Donc dans ce cas là, ce n'est pas sûr à 100%. J'ai donc mis en place le TIMEOUT qui fonctionne à merveille.

Reply

Sujets relatifs:

Leave a Replay

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