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 :

Récupérer 2 lignes après un FIND


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Technicien PC
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien PC
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Par défaut Récupérer 2 lignes après un FIND
    Bonjour,

    J'ai un fichier texte qui récupère la configuration BIOS d'une machine sous la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Lock Legacy Resources
    	*Disable
    	Enable
    J'ai réussi à récupérer la ligne désirée avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for /f "tokens=* delims=" %%a in ('type test.txt^| Find /i "ma recherche"') do echo %%a >> Resultat.txt
    Comme puis-je faire pour récupérer les 2 lignes du dessous et copier les 3 lignes en tout dans le fichier resultat.txt ?

    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Tu peux faire un truck comme ça:

    Pense à bien définir ta recherche, et tokens n'est utile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    setlocal enabledelayedexpansion
    set /a "Cnt=1"
    for /f "delims=" %%a in ('type test.txt^| Find /i "ma recherche"') do (
        if !Cnt! LEQ 2 set "Line!Cnt!=%%a"
        echo %%a >> Resultat.txt
        set /a "Cnt+=1"
    )
    echo !Line1!
    echo !Line2!
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien PC
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien PC
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Par défaut
    Bonjour,

    Tout d'abords merci pour la réponse.

    Cependant, il reste un problème que je n'explique pas... Les 3 lignes sont récupérées correctement, mais la valeur ne l'ai pas.

    La 1ère ligne est correcte, mais les 2 suivantes, la valeurs retournée est : "Commande echo activée".

    Aurais-tu une idée ? en cherchant un peu, il semblerait qu'il faille ajouter un "." entre l'echo et la variable... mais après test, j'ai un résultat vide.

    Merci

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    Je crois que j'avais mal compris ta demande, essaye ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    setlocal enabledelayedexpansion
    for /f "delims=" %%a in ('type test.txt^| Find /i "ma recherche"') do (
        for /f "tokens=1 delims=[]" %%b in ('echo %%~a') do set /a "Line=%%~b"
    )
    set /a "Cnt=1"
    set /a "Line-=1"
    for /f "skip=!Line! delims=" %%a in ('type test.txt') do (
        if !Cnt! LEQ 3 (
            echo %%a >> Resultat.txt
        )
        set /a "Cnt+=1"
    )
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien PC
    Inscrit en
    Mars 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Technicien PC
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2014
    Messages : 9
    Par défaut
    J'ai pas encore tester mais il y a déjà un truc que je comprend pas.

    Pourrais-tu m'expliquer à quoi sert les 2 premiers for ?

  6. #6
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 359
    Billets dans le blog
    2
    Par défaut
    A récupérer le numéro de la première de tes 3 lignes, mais j'ai oublié le paramètre "/n" dans la commande find donc sa donne ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    setlocal enabledelayedexpansion
    for /f "delims=" %%a in ('type test.txt^| Find /i /n "ma recherche"') do (
        for /f "tokens=1 delims=[]" %%b in ('echo %%~a') do set /a "Line=%%~b"
    )
    set /a "Cnt=1"
    set /a "Line-=1"
    for /f "skip=!Line! delims=" %%a in ('type test.txt') do (
        if !Cnt! LEQ 3 (
            echo %%a >> Resultat.txt
        )
        set /a "Cnt+=1"
    )
    Le gourou dicte la ligne (de commande) à suivre ...

    Penser à lire le Tutoriel Batch ou a consulter la FAQ Batch et ses contributions,
    ainsi que le Cour sur la ligne de commande et des scripts

Discussions similaires

  1. Récupérer la ligne après MAINTENANT en SQL
    Par anto2b dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2012, 10h58
  2. [Batch] recuperer n lignes apres find
    Par Doksuri dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 25/01/2010, 13h28
  3. Récupèrer la ligne d'avant ou d'après mon SELECT
    Par okkix dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/04/2009, 11h23
  4. [XSL-FO] retour à la ligne après un tableau ?
    Par Mrlud dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 25/04/2005, 17h15
  5. [langage] split ligne apres ligne ?
    Par simos dans le forum Langage
    Réponses: 17
    Dernier message: 25/06/2004, 15h07

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