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 :

Rechercher une chaîne de caractères dans un fichier texte [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut Rechercher une chaîne de caractères dans un fichier texte
    Bonjour.
    Je m'arrache les cheveux pour vérifier l'existence d'une chaine de caracteres dans un fichier texte avec powershell.
    Code POWERSHELL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $fichier #fichier à examiner
    $texteRechercher #texte à rechercher
     
    $data = $fichier -match $texteRechercher
     
    Write-Host $data

    me renvoie systématiquement false alors que la chaîne de caractères existe.

    Merci de votre aide.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Euhh
    $file = Get-Content et non pas Get-Items
    mais ça ne marche toujours pas.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Bon en progrès mais ne trouve toujours pas la chaîne de caractères, renvoie false.
    Code POWERSHELL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [String]$fichier = Get-Content $repertoire'\'$fichier
     
    $fichier #fichier à examiner
    $texteRechercher #texte à rechercher
     
    $data = $fichier -match $texteRechercher
     
    Write-Host $data

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Bon,
    j'ai compris où se trouve le loup.
    $fichier -match $texteRechercher
    renvoie true uniquement si il n'y a qu'un mot ou une partie de mot à rechercher.
    Du coup comment chercher une chaîne de la forme "chaîne à rechercher" ?

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    tu peux utiliser Select-String.
    Ensuite pour la regex cela dépend du texte recherché et des possibles occurrences dans le fichier ciblé. Sans exemple issus du contexte difficile de proposer qq chose.

    L'opérateur -match renvoi le résultat de son exécution dans la variable automatique $matches.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Bonjour.
    Je cherche à savoir si une chaîne de caractères est présente.

    J'ai un fichier dont le contenu est : 'Il fait chaud aujourd’hui."
    Je souhaite savoir si il contient la chaîne : "fait chaud"

    Si je cherche "fait chaud", le texte n'est pas trouvé.
    Si je cherche "chaud", le texte est trouvé.
    Pourquoi.

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $texteRechercher =  "fait chaud" # texte à rechercher
     
    [String]$chaineAexaminer = Get-Content $repertoire'\'$fichier 
    Write-Host $chaineAexaminer # = Il fait chaud aujourd’hui.
     
    $reponse = $chaineAexaminer -match $texteRechercher
     
    Write-Host $reponse # = false

    Je souhaite savoir si il contient la chaîne : "chaud"
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $texteRechercher =  "chaud" # texte à rechercher
     
    [String]$chaineAexaminer = Get-Content $repertoire'\'$fichier 
    Write-Host $chaineAexaminer # = Il fait chaud aujourd’hui.
     
    $reponse = $chaineAexaminer -match $texteRechercher
     
    Write-Host $reponse # = true

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    ceci fonctionne :
    Code powershell : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    $fichier='c:\temp\test.txt'
    $texteRechercher =  "fait chaud" # texte à rechercher
    @'
    $texteRechercher =  "fait chaud" # texte à rechercher
    '@ > $fichier
     
    [String]$chaineAexaminer = Get-Content $fichier 
    Write-Host $chaineAexaminer 
     
    $reponse = $chaineAexaminer -match $texteRechercher
     
    Write-Host $reponse 
    #True
     
    $matches
    #Name                           Value
    #----                           -----
    #0                              fait chaud
     
    @'
    Il fait chaud aujourd'hui.
    '@ > $fichier
     
    [String]$chaineAexaminer = Get-Content $fichier 
    Write-Host $chaineAexaminer # = Il fait chaud aujourd’hui.
     
    $reponse = $chaineAexaminer -match $texteRechercher
     
    Write-Host $reponse 
    #True
    Vérifie l'encodage...

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Merci Laurent, ça marche.
    Il ne me reste plus qu'à réussir à lancer mon batch.

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par 69Pierre Voir le message
    Il ne me reste plus qu'à réussir à lancer mon batch.
    Pour ce faire utilise un chemin relatif normé, tu feras une V2 avec ta syntaxe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/03/2010, 13h28
  2. [OL-2003] Recherche une chaine de caractere dans l'objet du mail
    Par kompakt_74 dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 26/06/2009, 12h31
  3. Réponses: 8
    Dernier message: 25/03/2008, 11h42
  4. Réponses: 10
    Dernier message: 22/05/2006, 12h45

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