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

  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

  7. #7
    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
    Salut,

    Merci encore pour ton temps.

    Ça se rapproche, mais c'est pas encore tout à fait ça. Je m'explique.

    J'ai encore un erreur dans la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "skip=!Line! delims=" %%a in ('type test.txt') do
    L'erreur retournée est skip=!Line! était inattendu. D'après les recherches, il semblerait que les variables !n! ne soient pas supporter dans les boucles...

  8. #8
    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
    Effectivement, j’avais pas testé le script . Celui là marche

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @echo off
    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 "delims=" %%a in ('type test.txt ^| Find /v /n ""') do (
        for /f "tokens=1* delims=[]" %%A in ('echo %%~a') do (
    		if %%A GEQ !Line! (
    			if !Cnt! LEQ 3 (
    				echo %%B >> 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

  9. #9
    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
    Salut,

    Je test tout ça et te donne une réponse au plus vite =)

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