Script batch: Analyser un fichier log

Résolu/Fermé
poparnassus Messages postés 419 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 - Modifié le 24 juin 2017 à 02:57
poparnassus Messages postés 419 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 - 25 juin 2017 à 14:59
Bonjour,

Salut MessieuDame :-)

Voila j'ai besoin d'analyse un ensemble de fichier Log qui contient ~1 000 000 de ligne ( voir beaucoup plus, étant donnée que j'arrive pas a déterminer le nombre ^^). J'ai voulue tester un script batch mais il bloque au deuxieme fichier de 364 000 ligne, juste pour le comtpage de ligne lol

Donc que me conseillerez-vous ? un code en C ? plus performant ?

Je recherche des addresses IP differentes du reseau local, donc je veux lister toute les adresse qui ne sont pas en 192.168.xxx.xxx

Ci dessous le code utiliser pour compter les lignes.

Merci de ne pas m'insulter, je sais que le batch est loin d'etre performant lool

Amicalement bonne soirée


@echo off
SETLOCAL enableextensions ENABLEDELAYEDEXPANSION
@for %%n in (%0) do set fold=%%~dpn
::chemin
set archive=%fold%Archive_LOG\local
echo %archive%
pause


::Compteur de ligne des fichier journal
cd %archive%
set /a total=0
for %%A in (*.txt) do (
set /a compt=0
for /f "tokens=*" %%I in ('type "%%A"') do (set /a compt+=1)
echo %%~dpnxA : !compt!
set /a total=!total!+!compt!
)
echo. & echo Total ligne : !total!


2 réponses

barnabe0057 Messages postés 14112 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 29 novembre 2022 4 847
24 juin 2017 à 10:19
Bonjour,

Le premier FOR est inutile et contient une erreur, tu peux faire comme ça :

@echo off
setlocal enableextensions enabledelayedexpansion

set archive=%~dp0Archive_LOG\local

echo %archive%

echo.

::Compteur de ligne des fichier journal

cd %archive%

set /a total=0

for %%A in (*.txt) do (

set /a compt=0

for /f "tokens=*" %%I in ('type "%%A"') do (set /a compt+=1)

echo %%~nxA : !compt!

set /a total=!total!+!compt!

)

echo. & echo Total lignes : !total!

echo. & pause

exit

0
barnabe0057 Messages postés 14112 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 29 novembre 2022 4 847
24 juin 2017 à 10:26
Si les fichiers à analyser sont trop gros, tu peux peut-être ajouter une étape pour découper en fichiers plus petits.
0
yg_be Messages postés 20751 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 décembre 2022 1 272
24 juin 2017 à 10:22
bonjour, pourquoi compter les lignes si tu cherches des adresses IP?
pourquoi a-tu choisi de faire cela ainsi, quels autres outils maîtrises-tu?
0
poparnassus Messages postés 419 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
24 juin 2017 à 16:34
je pourrais le faire en C sinon ?
0
yg_be Messages postés 20751 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 1 décembre 2022 1 272 > poparnassus Messages postés 419 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019
24 juin 2017 à 16:46
si tu connais le C, tu pourrais le faire en C, en effet!
0
poparnassus Messages postés 419 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
24 juin 2017 à 17:37
Oui je ne sais pas pourquoi je voulais le faire en Batch, je suis en train d'apprendre le C justement, donc ceci va être un exercice parfait sur la manipulation de chaîne !!!
0
poparnassus Messages postés 419 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 25 décembre 2019 30
25 juin 2017 à 14:59
0