Findstr ( qui trouvera la solution ? )

Findstr ( qui trouvera la solution ? ) - Shell/Batch - Programmation

Marsh Posté le 21-05-2010 à 11:23:03    

Je cherche à trouver le nombre de toto et de tata entre les lignes compte et compteplus et pas entre les lignes Ccompteplus et compte >>>TEST.TXT
TEST.TXT
21.Mai 11:30:15  compte
21.Mai 11:31:59  toto
21.Mai 11:32:07  toto  
21.Mai 11:32:08  tata
 
21.Mai 11:32:08  compteplus  
21.Mai 11:32:08  tata  
21.Mai 11:32:09  toto  
21.Mai 11:32:15  compte  
21.Mai 11:32:17  toto  
21.Mai 11:33:03  toto

21.Mai 11:37:20  compteplus  
21.Mai 11:37:22  toto  
21.Mai 11:41:03  toto  
21.Mai 11:41:03  tata  
21.Mai 11:41:11  compte  
21.Mai 11:41:12  toto
 
JOURSTAT.BAT
@echo off
rem ======================================== "toto" ======================================================  
set /a ComptA =0
Findstr /c:"toto" "test.txt" > jour.txt
for /f "delims=" %%i in (jour.txt) do set /a ComptA+=1
echo nombre de toto : %comptA% >> "fin.txt"
rem ======================================== "tata" ======================================================  
set /a ComptB =0
Findstr /c:"tata" "test.txt" > jour.txt
for /f "delims=" %%i in (jour.txt) do set /a ComptB+=1
echo nombre de tata : %comptB% >> "fin.txt"
 
Je trouve comme résultat : TOTO = 8     TATA = 3           Voici ce que je désire avoir comme résultat :  TOTO = 5   TATA = 1  
J'ai tout essayé, mais je ne vois pas de solution. D'avance, merci de votre aide


Message édité par philou192 le 21-05-2010 à 14:27:54
Reply

Marsh Posté le 21-05-2010 à 11:23:03   

Reply

Marsh Posté le 02-06-2010 à 14:43:20    

Le code suivant devrait faire l'affaire :

Code :
  1. SET /A CompteToto=0
  2. SET /A CompteTata=0
  3. FOR /F "tokens=3" %%m in (TEST.TXT) DO (
  4.           IF "%%m" == "compte"     ( SET Compter=OUI
  5.    ) ELSE IF "%%m" == "compteplus" ( SET Compter=
  6.    ) ELSE CALL CALL :CompterMots %%m
  7. )
  8. echo Nombre de 'toto' : %CompteToto%
  9. echo Nombre de 'tata' : %CompteTata%
  10. GOTO :EOF
  11. GOTO :_Apres_CompterMots
  12. :CompterMots
  13.    IF "%Compter%" == "OUI" (
  14.              IF "%1" == "toto"  ( SET /A CompteToto += 1
  15.       ) ELSE IF "%1" == "tata"  ( SET /A CompteTata += 1 )
  16.    )
  17.    GOTO :EOF
  18. :_Apres_CompterMots


 
Jean-Pierre.


Message édité par aigles le 02-06-2010 à 14:45:01
Reply

Marsh Posté le 02-06-2010 à 17:40:23    

Merci beaucoup, Jean Pierre.
C'est exactement ce que je recherchais. Chapeau ! ! !

Reply

Sujets relatifs:

Leave a Replay

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