recherche chaines caractère dans fichiers créés aujourd'hui

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
kraps
Batcheur occasionnel
Messages : 3
Enregistré le : 16 janv. 2009 22:00

recherche chaines caractère dans fichiers créés aujourd'hui

Message par kraps »

Bonjour
je souhaite rechercher plusieurs chaines de caractères dans plusieurs logs, uniquement dans les logs du jour :

les fichiers log sont placés dans un dossier "logs", contenant plusieurs sous dossiers "analyseur1", "analyseur2", etc - et dans chaque sous dossier se trouvent les logs (nom du fichier : "dateheureanalyseur1.log")
remarque : il peut y avoir deux logs par analyseur le même jour (si l'analyseur a été arrêté-redémarré plusieurs fois)

il faut extraire certaines chaines, exemple : "impossible d'exécuter" , "erreur d'exécution", etc
et créer un rapport : "rapportdate.txt", contenant
analyseur1 :
ligne XXX : impossible d'exécuter ...blablabla...
idéalement, il faudrait extraire la ligne qui contient la chaine de caractères, et la ligne précédente et la ligne suivante

j'ai un (petit) début de semblant de solution :
findstr /N /S /C:"impossible d'ex" *.log > Rapport.txt

il me manque :
-problème : caractères accentués (je peux m'en sortir en ne recherchant qu'une partie de la chaine n'en contenant pas
-rechercher plusieurs chaines : faut-il répéter la ligne pour chaque chaine de caractère ?
-ne rechercher que dans les fichiers créés ou modifiés ce jour
-créer un fichier "rapport" par jour (lui donner comme nom la date du jour)
-extraire la ligne précédant et la ligne suivant la chaine (facultatif)

quelqu'un peut-il m'aider ?
d'avance merci
danakil
Batcheur débutant
Messages : 17
Enregistré le : 06 févr. 2009 13:25

Re: recherche chaines caractère dans fichiers créés aujourd'hui

Message par danakil »

Salut!
j'ai un (petit) début de semblant de solution :
1/ findstr /N /S "impossible d'ex" *.log > Rapport.txt

il me manque :
-problème : caractères accentués (je peux m'en sortir en ne recherchant qu'une partie de la chaine n'en contenant pas
2/ -rechercher plusieurs chaines : faut-il répéter la ligne pour chaque chaine de caractère ?
3/ -ne rechercher que dans les fichiers créés ou modifiés ce jour
4/ -créer un fichier "rapport" par jour (lui donner comme nom la date du jour)
5/ -extraire la ligne précédant et la ligne suivant la chaine (facultatif)
Beaucoup de questions :lol:
Il faut quand même un peu plus d'infos!

1/ findstr /N /S "impossible d'ex" *.log --> *.log >>> tu recherches entre autre la chaîne "impossible d'ex" dans tous les dossiers contenant l'extension ".log" mais il manque les informations des dossiers ou répertoires ciblés en amont.
Donne moi le ou les chemins complets du répertoire contenant ces "dateheureanalyseur*.log"

2/ Yes!
Pour chaque occurence il te faudra inclure une nouvelle variable la contenant, par contre il te faudra également effectuer une redirection dans ton rapport sous cette forme ">>" et non sous celle-ci ">"
La première rajoute et la deuxième écrase et remplace.

3/ Yep!
Exécution uniquement dans le(s) derniers fichiers créer - inclure la date dans la variable de recherche.

4/ Cela ne pose pas de soucis!

5/ Alors là??? Que peuvent contenir ces lignes afin qu'elles soient extraites ...

Résumé :
Donne le chemin du répertoire contenant le(s) dossiers cibles, idem pour toutes les chaînes de caractères recherchées et avec ces infos tes soucis ne devraient pas être insurmontables.
:mrgreen:
Précise également ton O.S
Batch_Man
King Of Batch
Messages : 64
Enregistré le : 09 janv. 2009 00:01

Re: recherche chaines caractère dans fichiers créés aujourd'hui

Message par Batch_Man »

Bonjour,

J'espère que ça répond à ta demande:

Code : Tout sélectionner

@echo off

set rep=%~d0\Tmp

@echo off

set rep=%~d0\Tmp

for /f "tokens=*" %%a in ('dir /s /b /a-d "%rep%"') do (
    for /f "tokens=1-2 delims= " %%o in ("%%~ta") do (
         if %%o==%date% if %%~xa==.log (
              findstr /r /n "impossible" "%%a" >> %rep%\%date:~0,2%_%date:~3,2%_%date:~6,4%.txt)
                    )
                         )

pause

pause
Batch_Man
kraps
Batcheur occasionnel
Messages : 3
Enregistré le : 16 janv. 2009 22:00

Re: recherche chaines caractère dans fichiers créés aujourd'hui

Message par kraps »

bonsoir
merci à tous les deux (danakil et batch_man) pour vos réponses rapides

pour répondre à danakil :
OS : Windows server 2003
Dossier contenant les logs C:\Glims7\Log
ce dossier contenant deux dossiers "Analyseurs" et "Planificateurs"
le dossier "Analyseurs" contient une vingtaine de dossiers, chaque dossier contient les logs
le dossier "Planificateurs" contient une dizaine de dossiers, chaque dossier contient les logs
Mots clé à rechercher : "impossible" "ambigu" "MISPL"

j'ai testé le batch proposé par batch_man, (très légèrement) modifié pour rechercher le mot "MISPL" :
echo off
set rep=C:\Glims7\log
for /f "tokens=*" %%a in ('dir /s /b /a-d "%rep%"') do (
for /f "tokens=1-2 delims= " %%o in ("%%~ta") do (
if %%o==%date% if %%~xa==.log (
findstr /r /n /s "MISPL" "%%a" >> %rep%\Erreur%date:~0,2%_%date:~3,2%_%date:~6,4%.txt)
)
)

j'obtiens ceci :
C:\Glims7\log\Planificateurs\KT_P_01\KT_P_01_20090208_220009.log:520:Erreur en exécutant MISPL:
C:\Glims7\log\Planificateurs\KT_P_01\KT_P_01_20090208_220009.log:1723:L'exécution du MISPL de calcul d'analyse suivant a échoué car: Erreur en exécutant MISPL:
C:\Glims7\log\Planificateurs\KT_P_01\KT_P_01_20090208_220009.log:1966:Erreur en exécutant MISPL:
etc...etc....
C:\Glims7\log\Planificateurs\KT_P_07\KT_P_07_20090208_210004.log:3849:Erreur en exécutant MISPL:
C:\Glims7\log\Planificateurs\KT_P_07\KT_P_07_20090208_210004.log:4579:Erreur en exécutant MISPL:
C:\Glims7\log\Planificateurs\KT_P_08\KT_P_08_20090209_060004.log:1860:Erreur en exécutant MISPL:

ce qui correspond exactement à ce que je voulais !

il ne me reste plus qu'à créer une tâche planifiée +
pour retrouver les lignes environnantes, et ainsi pouvoir corriger mes erreurs (c'est le but de cette recherche, corriger mes erreurs !!!), je n'ai plus qu'à ouvrir le ou les logs incriminés dans notepad++, rechercher les lignes et le tour est joué ! ya plus qu'à

petite question : pour rechercher "impossible" "ambigu" "MISPL", est-ce que que je dois créer un batch pour chaque expression, ou dans le batch on peut faire un "ou"
(rechercher "impossible" ou "ambigu" ou "MISPL" ?

encore merci à tous les deux pour votre aide... :lol:
danakil
Batcheur débutant
Messages : 17
Enregistré le : 06 févr. 2009 13:25

Re: recherche chaines caractère dans fichiers créés aujourd'hui

Message par danakil »

Salut!
En combinant tes commandes et celles de batch_man, tu peux faire éventuellement comme ceci dans un seul batch:
Sous réserve que batch_man apporte une solution compressant %%a, %%b et %%c. Moi je n'ai fait que compiler.

Code : Tout sélectionner

@echo off

set rep=C:\Glims7\log
for /f "tokens=*" %%a in ('dir /s /b /a-d "%rep%"') do (
for /f "tokens=1-2 delims= " %%o in ("%%~ta") do (
if %%o==%date% if %%~xa==.log (
findstr /r /n /s "MISPL" "%%a" >> %rep%\Erreur%date:~0,2%_%date:~3,2%_%date:~6,4%.txt)
)
)

for /f "tokens=*" %%b in ('dir /s /b /a-d "%rep%"') do (
for /f "tokens=1-2 delims= " %%o in ("%%~tb") do (
if %%o==%date% if %%~xb==.log (
findstr /r /n /s "impossible" "%%b" >> %rep%\Erreur%date:~0,2%_%date:~3,2%_%date:~6,4%.txt)
)
)

for /f "tokens=*" %%c in ('dir /s /b /a-d "%rep%"') do (
for /f "tokens=1-2 delims= " %%o in ("%%~tc") do (
if %%o==%date% if %%~xc==.log (
findstr /r /n /s "ambigu" "%%c" >> %rep%\Erreur%date:~0,2%_%date:~3,2%_%date:~6,4%.txt)
)
)
pause
 
Bye!
Batch_Man
King Of Batch
Messages : 64
Enregistré le : 09 janv. 2009 00:01

Re: recherche chaines caractère dans fichiers créés aujourd'hui

Message par Batch_Man »

Bonjour ok tant mieux alors, non testé ( peut-être une compression ):

Code : Tout sélectionner

@echo off

set rep=C:\Glims7\log
for /f "tokens=*" %%a in ('dir /s /b /a-d "%rep%"') do (
for /f "tokens=1-2 delims= " %%o in ("%%~ta") do (
if %%o==%date% if %%~xa==.log (
findstr /r /n /s "MISPL" "%%a" >> %rep%\Erreur%date:~0,2%_%date:~3,2%_%date:~6,4%.txt
findstr /r /n /s "impossible" "%%a" >> %rep%\Erreur%date:~0,2%_%date:~3,2%_%date:~6,4%.txt
findstr /r /n /s "ambigu" "%%a" >> %rep%\Erreur%date:~0,2%_%date:~3,2%_%date:~6,4%.txt)
)
)
notepad %rep%\Erreur%date:~0,2%_%date:~3,2%_%date:~6,4%.txt
 
Batch_Man
kraps
Batcheur occasionnel
Messages : 3
Enregistré le : 16 janv. 2009 22:00

Re: recherche chaines caractère dans fichiers créés aujourd'hui

Message par kraps »

ça fonctionne à merveille !
encore merci de votre aide...
Batch_Man
King Of Batch
Messages : 64
Enregistré le : 09 janv. 2009 00:01

Re: recherche chaines caractère dans fichiers créés aujourd'hui

Message par Batch_Man »

Bonsoir,

Ok, c'est parfait alors

Bonne soirée
danakil
Batcheur débutant
Messages : 17
Enregistré le : 06 févr. 2009 13:25

Re: recherche chaines caractère dans fichiers créés aujourd'hui

Message par danakil »

C'est parfait ;)
Répondre