[DOS] Variables et conditions IF pour commande GREP

Variables et conditions IF pour commande GREP [DOS] - Shell/Batch - Programmation

Marsh Posté le 10-11-2006 à 17:10:55    

Bonjour !
 
J'ai actuellement un shell Unix qui me permet de déterminer si un import Oracle à fonctionné ou pas (en effectuant une recherche sur la chaine "ORA-" dans le fichier de log).
 
En clair ca donne ca (dans le principe) :
 
 

Code :
  1. chaine_ko="ORA-"
  2. traitement_ko=`grep -c "$chaine_ko" monfichier.log`
  3. if [ "$traitement_ko" -gt 0 ]
  4. then
  5.       print "Erreur import monfichier" >> $check_erreur.txt
  6. fi


 
Avec cette commande GREP on peut faire des choses vraiment très sympa. Du coup j'ai réessayé de faire la meme chose sous DOS. J'ai d'abord cherché un équivalent à grep en version Windows, ce que j'ai trouvé ici :
 
http://pages.interlog.com/~tcharron/grep.html
 
Ca date un peu mais ca marche toujours très bien !
 
La commande "grep -c "ORA-" monfichier.log" renvoi 0 si la chaine "ORA-" n'a pas été trouvée dans le fichier monfichier.log. Sinon elle renvoi le nombre d'occurences de la chaine "ORA-".
 
Mais après je ne sais pas comment stocker ce résultat dans une variable DOS et tester sa valeur ?
 
J'ai testé ca :
 
 
 

Code :
  1. @echo off
  2. set t=grep -c "ORA-" monfichier.log
  3. @if t == 0 goto end
  4. @if t == 1 goto chaineko
  5. :chaineko
  6. echo ERREUR !
  7. :end


 
Mais evidemment ca ne marche pas, car la variable t prend comme valeur "grep -c "ORA-" monfichier.log" au lieu de O ou 1 ...
 
Donc si un pro du DOS pouvait me dire comment faire ca , ce serait vraiment super ! Toutes les bidouilles bilousiennes sont permises

Reply

Marsh Posté le 10-11-2006 à 17:10:55   

Reply

Marsh Posté le 10-11-2006 à 19:20:02    

Sous DOS ou le batch Windows ? Il y a beaucoup de différences, même si ce n'est pas le cas dans cet exemple.
 
Renseigne-toi sur ErrorLevel.
 
La syntaxe :
set VAR=commande
n'existe pas.
 
Dans ton cas, t sera une valeur chaîne. Fais :
echo %t%
pour comprendre.
 

Reply

Marsh Posté le 10-11-2006 à 22:41:47    

Pardon, Batch Windows en fait.
 
Oui sinon j'avais bien compris :
 
"Mais evidemment ca ne marche pas, car la variable t prend comme valeur "grep -c "ORA-" monfichier.log" au lieu de O ou 1 ... "

Reply

Marsh Posté le 11-11-2006 à 06:13:19    

wizdom a écrit :


Oui sinon j'avais bien compris :
 
"Mais evidemment ca ne marche pas, car la variable t prend comme valeur "grep -c "ORA-" monfichier.log" au lieu de O ou 1 ... "


Désolée d'avoir zappé ce passage.
 
Mais tu as zappé aussi ma deuxième ligne. :D

Reply

Marsh Posté le 11-11-2006 à 12:22:09    


Oui, le Errorlevel ?  
 
Ben non ca ne sert qu'à récuperer des codes d'erreurs.
 
Par exemple :
 
grep -c "ORA-" toto.txt
echo %ERRORLEVEL%
 
Si toto.txt existe, je récupère la valeur 0 avec le Errorlevel.
Si toto.txt n'existe pas je récupère la valeur 2.
 
Mais en aucun cas le errorlevel me renvoi le contenu du résultat de la commande grep...
 
Hélas :)

Reply

Sujets relatifs:

Leave a Replay

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