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ère dans un fichier [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 9
    Par défaut Rechercher une chaîne de caractère dans un fichier
    Bonjour à tous,

    C'est la première fois que je poste ici, excusez moi d'avance si je ne suis pas clair.

    Voilà mon problème je dois écrire un script qui doit aller cherche la version d'un logiciel dans un fichier .txt et le sortir dans un fichier txt avec la totalité des version et des noms des clients sauf que le noms de client ne se trouve quand dans le nom du dossier (exemple ci-dessous).

    La problématique est qu'il n'y a pas que un fichier .txt (il y en a plusieurs dans plusieurs dossier différents).

    client 1
    |_fichier1.txt
    |_fichier2.txt
    |_fichier3.txt
    client 2
    |_fichier1.txt
    |_fichier2.txt
    |_fichier3.txt

    etc etc ...

    et j'aimerais que cela me ressorte un fichier .txt avec le nom du client et la version logiciel qui va avec.

    Petite problématique : exemple : pour client 1 j'ai 100 fichier avec le nom de version, pour client 2 50 etc etc... pour chaque client.

    Pour le moment j'ai un fichier fin.txt qui prend tous les fichier de client 1, client 2 etc.. mais j'aimerais avoir une seule fois client 1 client 2 avec la dernière version du logiciel.

    Si vous avez des idées.

    c'est en Powershell.

    Merci,
    Cordialement.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Il nous faudrait des exemples de fichier client.

    En sortie il faut 1 seul fichier OU un fichier par client OU un fichier par fichier client ?

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 9
    Par défaut
    Bonjour,

    Ci-joint un exemple, vous trouverez les dossiers client dans lesquels se trouve des fichier .txt contenant une date (ici la même mais dans les fichiers originaux la date varie) ainsi que la version du logiciel.

    Le but est d'avoir 1 fichier .txt final avec le nom du client (qui est le nom du dossier) et la dernier version du logiciel.

    Merci.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Une version est officiellement composé de 4 chiffres ou moins, séparé par un point.
    Je voit que tes versions sont du type 15.0.0.0_14. Est ce que le _14 à une importance, est ce que ça fait partie de la version, ou pouvons nous l'ignorer ?

    Est ce que toutes vos versions ont le même format ?

  5. #5
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 9
    Par défaut
    Oui toutes les version on le même format, cela va de la version 15 à la version 18. Le plus important étant le deux premiers chiffres

    Concernant le _14 de fin, il peut être ignorer.

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Je te propose ceci.

    Finalement, j'ai géré toutes les parties de la version

    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
    $dossier = "C:\MonDossierClient"
     
    $result = @()
    foreach($folder in (Get-ChildItem -Path $dossier | Where-Object {$_.PSIsContainer}))
    {
     
        $version = Get-Content -Path ($folder.Fullname + "\*.txt") | 
        Select-String -Pattern "version ((\d+(\.\d+){1,4}_\d+))" | 
        ForEach-Object {$_.Matches.Groups[1].Value} | 
        Select-Object -Property @{Name = 'Name'; Expression = {$_}}, @{Name = 'Version'; Expression = {[version]$_.Split("_")[0]}}, @{Name = 'EndVersion'; Expression = {[int]$_.Split("_")[1]}} |
        Sort-Object -Descending -Property Version, EndVersion | Select-Object -ExpandProperty Name -First 1
        $result += $folder.Name + " : " + $version
    }
     
    Set-Content -Path ($dossier + "\result.txt") -Value ($result -join "`r`n")

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

Discussions similaires

  1. Rechercher une chaîne de caractère dans un fichier
    Par klaxix dans le forum Windows
    Réponses: 1
    Dernier message: 31/10/2019, 17h17
  2. [PowerShell] Rechercher une chaîne de caractères dans un fichier texte
    Par 69Pierre dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/07/2018, 18h02
  3. Réponses: 2
    Dernier message: 17/01/2010, 01h01
  4. Rechercher une chaîne de caractère dans une série de fichier
    Par Edoxituz dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/02/2006, 12h51

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