recherche chaines caractère dans fichiers créés aujourd'hui
Modérateur : WIN32-[GG]
recherche chaines caractère dans fichiers créés aujourd'hui
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
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
Re: recherche chaines caractère dans fichiers créés aujourd'hui
Salut!
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.
Précise également ton O.S
Beaucoup de questionsj'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)
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.
Précise également ton O.S
Re: recherche chaines caractère dans fichiers créés aujourd'hui
Bonjour,
J'espère que ça répond à ta demande:
Batch_Man
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
Re: recherche chaines caractère dans fichiers créés aujourd'hui
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...
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...
Re: recherche chaines caractère dans fichiers créés aujourd'hui
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.
Bye!
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
Re: recherche chaines caractère dans fichiers créés aujourd'hui
Bonjour ok tant mieux alors, non testé ( peut-être une compression ):
Batch_Man
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
Re: recherche chaines caractère dans fichiers créés aujourd'hui
ça fonctionne à merveille !
encore merci de votre aide...
encore merci de votre aide...
Re: recherche chaines caractère dans fichiers créés aujourd'hui
Bonsoir,
Ok, c'est parfait alors
Bonne soirée
Ok, c'est parfait alors
Bonne soirée