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 :

Extraire caractère dans fichier et creer un fichier [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut Extraire caractère dans fichier et creer un fichier
    Bonjour et merci pour l'aide que vous pourrez m'apporter !

    Je cherche a créer un script PowerShell qui extrait une information qui se trouve dans un fichier XML puis à créer un fichier (.txt) qui aura comme nom la partie qui aura été extraite.

    mon fichier xml (c:\temp\Inventory.xml) fait plus de 2000 lignes dont voici un extrait :

    <FILENAME />
    <FILESIZE>0</FILESIZE>
    <GUID />
    <LANGUAGE />
    <INSTALLDATE>2014/12/08</INSTALLDATE>
    <BITSWIDTH>64</BITSWIDTH>
    <SOURCE>1</SOURCE>
    </SOFTWARES>
    <ACCOUNTINFO>
    <KEYNAME>TAG</KEYNAME>
    <KEYVALUE>168599</KEYVALUE>
    </ACCOUNTINFO>

    La valeur que je souhaite récupérer est 168599 (qui, potentiellement, change sur chaque PC où je souhaite exécuter ce script)

    et je souhaite ensuite créer automatiquement un fichier 168599.txt

    Pour l'instant j'arrive a extraire la ligne complète <KEYVALUE>168599</KEYVALUE> mais ensuite je bloque !

    Merci pour votre aide !

    script actuelle :

    #Récupère l'objet Fichier
    Gci "$pwdC:\temp\Inventory.xml"|
    #Mémorise l'objet Fichier courant, puis le réémet
    Foreach {$CurrentFile=$_;$_}|
    #Lit ligne par ligne
    Get-Content|
    #Recherche le pattern (regex) "Testting"
    Select-String -Pattern "<KEYVALUE>"|
    #Ecrit le résultat dans un fichier.
    #Son nom est construit à partir du nom du fichier courant
    #préfixé par 'nexw-'
    Set-Content "$Pwd\new-$($CurrentFile.Name)"
    # résultat dans "$pwd\New-Test.Txt"

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $pwd = "."
    $fileItem = Get-Item "C:\temp\Inventory.xml" 
    
    $data = $fileItem | Get-Content |ForEach-Object{
    
        if ($_ -match '^<KEYVALUE>(.+)</KEYVALUE>$')
        {
            $matches[1]
        }
    } 
    
    $data | Out-File "$Pwd\new-$($fileItem.basename)"

    On récupère le fichier XML qu'on pipe dans Get-Content, lequel va nous sortir tout le contenu, ligne par ligne.
    Pour chaque ligne on vérifie si ça match le regex '^<KEYVALUE>(.+)</KEYVALUE>$' qui génère le cas échéant la variable automatique $Matches qui est un array contenant en 0 la ligne complète, en 1 l'élément que nous avons demandé dans la capture regex (tout ce qui est entre parenthèse cad (.+), entre <KEYVALUE> et </KEYVALUE>.
    A noter qu'en regex .+ veut dire n'importe quel caractère (.), une ou plusieurs fois (+).

    Finalement on prend l'output qu'on pipe vers Out-File pour sauvegarde.

    Résultat dans .\New-Inventory: 168599

    Tu peux adapter le nom de fichier en sortie selon tes besoins.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut Merci !
    EXCELLENT ! Merci beaucoup pour le coup de main !

    Par contre, je n'arrive pas a faire en sorte que le script me crée un fichier 168599.txt en sortie ! au lieu d'un fichier ave cle résultat dedans...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2015
    Messages : 66
    Par défaut
    Hello, tu veux dire qu'il te faut ceci ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data | Out-File "$Pwd\$($data).txt"
    Si tu veux un fichier vide avec la clé que dans le nom:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "" | Out-File "$Pwd\$($data).txt"

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut TOP !
    Ben voila, y a les pros et les autres...
    C'est exactement ce dont j'ai besoin ! SUPER.

    Un grand grand Merci mickyballadelli


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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/01/2013, 19h17
  2. Renommage du caractère à dans le nom d'un fichier
    Par laurentSc dans le forum Langage
    Réponses: 38
    Dernier message: 02/08/2010, 00h51
  3. Rechercher une chaine de caractères dans le nom d'un fichier
    Par meuah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2008, 17h54
  4. Problème de caractère dans l'écriture d'un fichier
    Par Oberown dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/07/2007, 10h55
  5. Réponses: 13
    Dernier message: 20/11/2006, 17h46

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