IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Lire une certaine partie d'un fichier texte


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut Lire une certaine partie d'un fichier texte
    Bonjour,

    J'aurais besoin de votre aide pour un script en batch un peu (beaucoup) plus compliqué que ce que j'ai l'habitude de faire !

    Je vous explique le contexte : j'ai un serveur DHCP sous W2003E, qui produit des logs dans C:\Windows\system32\dhcp
    Les logs sont de type DhcpSrvLog-Xxx.log, où Xxx équivaut au jour, par exemple Lun pour lundi, Mar pour mercredi,...

    (1) Il me faut donc dans un premier déterminer la date du jour précédent, pour aller vérifier dans le fichier de log de la veille. Je sais obtenir la date d'aujourd'hui, mais pas celle de la veille, je suppose que c'est possible, mais comment ?

    (2) Ensuite, je dois ouvrir ce fichier et commencer à lire à partir d'une certaine ligne (la 30ème il me semble). Je sais ouvrir le fichier, mais pas à partir d'une certaine ligne...

    (3) Puis, je voudrais savoir si, pour chaque ligne, c'est possible d'extraire chaque "partie" de celle-ci, à partir du moment où on connait un délimiteur ? Ici, par exemple :
    01;28/03/2012;Démarré
    -> Les éléments sont séparés par ";", et je souhaite récupérer essentiellement le premier paramètre, qui correspond à un ID d’évènement.

    Tout cela est trop pour moi et me paraît bien compliqué !

    Si vous pouvez m'aider, je vous en serez très reconnaissant

    Merci d'avance.

  2. #2
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Salut,

    Regarde l'aide en ligne de l'instruction "for" (for /?), ça répond à tes deux dernières questions.

    Pour la première, un tableau devrait être suffisant, ou au pire, à coup de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if "%jour%"="Lun" set log=Dim
    if "%jour%"="Mar" set log=Lun 
    ::ect

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut
    Salut,

    Et merci pour la réponse

    Je me doutais bien qu'il faut que j'utilise la commande FOR, mais si je viens poster c'est justement parce que j'ai pas réussi à trouver la commande qui fonctionne comme je le souhaite
    Idéalement, un petit bout de code m'aidera beaucoup

    Pour trouver la veille, tu as raison je n'avais pas pensé à cela. Par contre %jour% ne semble pas exister ? Sinon y'a %date% mais il retourne la date sous la forme jj/mm/aaa

  4. #4
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Tu as un log par jour ? ça commence à minuit ? tu fais ton analyse aux horaires de bureau ? Je demande ça parce que dans le fond, le log de la veille n'est rien d'autre que l'avant dernier log...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut
    Oui, j'ai un log par jour. Il n'est pas créé à minuit mais en début de journée et se remplit au fil de la journée en fonction des évènements. C'est pour ça que je veux analyser le rapport de la veille, peu importe à quel horaire.

  6. #6
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Citation Envoyé par Alwaysin Voir le message
    Je me doutais bien qu'il faut que j'utilise la commande FOR, mais si je viens poster c'est justement parce que j'ai pas réussi à trouver la commande qui fonctionne comme je le souhaite
    Idéalement, un petit bout de code m'aidera beaucoup
    Au vu de tes dernières informations, voilà une ébauche qui devrait faire l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
    set "file="
    set "folder=c:\windows\system32\dhcp"
    call :getbefore 1
    echo %file%
    echo.
    if not "%file%"=="" for /f "usebackq skip=1 tokens=1 delims=;" %%i in ("%folder%\%file%") do echo ID: %%i
    goto :eof
    
    :getbefore
    for /f "skip=%1 tokens=*" %%i in ('dir /b /o-d "%folder%\DhcpSrvLog-*.log"') do set "file=%%~i"& goto :eof
    P-.S. Inutile de me demander une explication de code, conf le beurre, l'argent du beurre et tout...

Discussions similaires

  1. Lire une ligne spécifique dans un fichier texte
    Par ZRemi dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/04/2010, 13h58
  2. [Débutant] rentrer dans une certaine ligne d'un fichier texte Possible?
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 5
    Dernier message: 05/04/2010, 00h16
  3. Lire une ligne précise d'un fichier texte
    Par Junta dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 23/04/2009, 18h26
  4. lire une chaîne > 255 d'un fichier texte
    Par pascal54 dans le forum Delphi
    Réponses: 5
    Dernier message: 21/02/2007, 23h38
  5. Comment lire une seul ligne d'un fichier texte?
    Par Julien1987 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/01/2007, 13h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo