Batch avec recherche sous condition

Batch avec recherche sous condition - Shell/Batch - Programmation

Marsh Posté le 17-04-2009 à 14:41:53    

Bonjour,
Grâce à vos aides, je comprends enfin les paramètres delims et tokens de l' instruction FOR.
Mais là, pour aller encore plus loin dans mes recherches, j' aurais besoin d' un coup de main.
 
Dans un fichier BATCH
Comment puis je faire pour démarrer un script si une (Perform@correction) à été effectuée après une ligne se terminant par value=1 ?  
Dans mon exemple, l' alarme doit s' effectuer le 21 mars à 9 heures 10
 
fichier new.txt
Operator0002.log:622101 24.Mar 12:04:16.599  --MParamDialog: PARAMETER changed ,'Conv. corr. handling', id=0xc426, value=1  
Operator0002.log:622108 24.Mar 12:05:32.708  --MParamDialog: PARAMETER changed ,'Conv. corr. handling', id=0xc426, value=2  
Operator0002.log:622176 24.Mar 12:09:39.857  --DBtnView: CE   Command execute    = 650025 (Perform@correction)  
Operator0002.log:622177 24.Mar 12:09:42.138  --DBtnView: CC   Command completion = 650025 (Perform@correction)  
Operator0002.log:622350 24.Mar 15:41:05.388  --MParamDialog: PARAMETER changed ,'Conv. corr. handling', id=0xc426, value=1  
Operator0002.log:622655 25.Mar 08:28:57.958  --MParamDialog: PARAMETER changed ,'Conv. corr. handling', id=0xc426, value=2  
Operator0002.log:622783 25.Mar 08:42:26.099  --DBtnView: CE   Command execute    = 650025 (Perform@correction)  
Operator0002.log:622784 25.Mar 08:42:28.833  --DBtnView: CC   Command completion = 650025 (Perform@correction)  
Operator0002.log:622798 25.Mar 08:59:10.193  --DBtnView: CE   Command execute    = 650025 (Perform@correction)  
Operator0002.log:622799 25.Mar 08:59:12.036  --DBtnView: CC   Command completion = 650025 (Perform@correction)

Operator0002.log:627342 31.Mar 08:48:22.187  --MParamDialog: PARAMETER changed ,'Conv. corr. handling', id=0xc426, value=1  
Operator0002.log:627595 31.Mar 09:10:12.375  --DBtnView: CE   Command execute    = 650025 (Perform@correction)  
Operator0002.log:627596 31.Mar 09:10:14.046  --DBtnView: CC   Command completion = 650025 (Perform@correction)

 
Merci d' avance pour toutes aides.
Philou

Reply

Marsh Posté le 17-04-2009 à 14:41:53   

Reply

Marsh Posté le 18-04-2009 à 21:20:22    

Salut,
 
Voici peut être un début de piste :
http://gnuwin32.sourceforge.net/packages/sed.htm
http://gnuwin32.sourceforge.net/packages/grep.htm
 

Code :
  1. del ligne?.txt
  2. del resultat.txt
  3. sed -n "/^Operator.*, value=1/=" new.txt >> ligne.txt
  4. for /f "tokens=*" %%A in (ligne.txt) do CALL :action %%A
  5. :action
  6. set var=%1
  7. set /A var=%var%+1
  8. sed -n "%var%p" new.txt | grep "(Perform@correction)" & if not errorlevel 1 echo ligne %var% >> resultat.txt


 
résultat.txt :
 

Code :
  1. ligne 12
  2. ligne 15


 
Démarche :
1.On repère les n° de ligne de new.txt où on rencontre le motif , value=1 (11 et 14 dans mon fichier test new.txt)
2. Pour chacune de ces valeurs, on additionne 1 pour obtenir le n° de ligne suivant.
3. Dans le n° de ligne suivant, on regarde si on a le motif Perform@correction et si oui, on affiche ce n° de ligne
 
Evidemment à toi de remplacer "echo ligne %var% >> resultat.txt" par l'action que tu souhaites (création de l'alarme)

Reply

Marsh Posté le 19-04-2009 à 13:35:02    

Merci beaucoup pour ton aide précieuse.
En effet, c' est exactement ce que je recherchais.
Il ne me reste plus qu' à trouver une solution pour
afficher un message AU PREMIER PLAN car là, j' ai
également un problème " because interface GUI ".
Lorsque je démarre mon batch manuellement ( double click ),
qui lui, appelle le script lançant le message, celà fonctionne.
Mais lorsque c' est le planificateur de tâche qui démarre
mon batch, pas de message au premier plan alors que
la commande Start fonctionne parfaitement dans mon batch.
 
En tous cas, merci pour tes recherches et tes solutions, eZula
 
Philou

Reply

Sujets relatifs:

Leave a Replay

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