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 :

Modification de fichier texte [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Par défaut Modification de fichier texte
    Bonjour à tous,

    Mon objectif est assez simple, modifier un fichier texte.
    Je veux remplacer un mot ou expression, par un autre.

    Mais je voudrais surtout pouvoir changer autant d'expression que je veux, en ayant juste à les mettre dans un fichier CSV.

    Voici déjà ce que j'ai fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $import = Import-Csv power.csv
    
    [int]$valeur = "0"
    Foreach ($line in $import){
    [string]$in = "C:\Documents and Settings\crusterholz\Bureau\power.txt"
    [string]$out = "C:\Documents and Settings\crusterholz\Bureau\power2.txt"
    echo $import[$valeur].amodif
    $in.replace($import[$valeur].amodif,$in[$valeur].modif) >> $out
    
    $valeur++}
    Ce petit script récupere le fichier CSV qui contient les modifications à effectuer (1 colonne "amodif", objet à modifier, et une colonne "modif", qui definira le mot ou expression qui remplacera l'autre).
    Ce CSV contient donc 2 colonnes, plus une ligne de titre (amodif et modif).

    Mais le probleme c'est que le replace ne fonctionne pas, ou en tout cas, en sortie, il me donne la valeur du $in, au lieu du contenu avec les modifications effectués.

    Ai-je fait une erreur? Est-ce que j'utilise la mauvaise solution?
    Quelqu'un aurait t-il une idée qui pourrait me permettre d'avancer?

    Merci d'avance.

  2. #2
    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
    Bonjour,
    regarde si cette fonction peut t'aider.
    Download

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Par défaut
    Bonjour,

    Non, ca ne m'aide pas beaucoup.
    En fait mon gros probleme ne vient pas tant du replace que du fait qu'il me faille importer un fichier texte avec un get-content, qui ne peux envoyer les données que par le "|".
    Avec le pire,les données sont traités tout de suite, rendant impossible le fait de la modifier plusieurs fois.

    Je n'ai pas encore eu le temps de regarder les deux autres scripts !
    En tout cas, merci pour ton aide.

    Si quelqu'un à une idée pour garder un script simple du genre fonction avec argument, afin de changer un fichier texte importé vers un autre fichier texte, je suis prenneur.

    Cordialement

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Par défaut
    J'ai réussi a finir ce que je voulais faire :

    Pré-requis :
    -un fichier CSV, avec les valeurs "amodif" et "modif" en 1er ligne séparé par une vigule.($import)
    -Un fichier qui contient vos données ($in)
    -un fichier de sortie ($out)
    -un variable contenant une valeur qui s'incrémente à chaque fois pour chaque liigne de votre CSV.

    Et voila la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $import = Import-Csv "C:\Documents and Settings\user\Bureau\Transfert de données\Developpement\power.csv"
    [int]$valeur = 0
    [string]$outfinal = "C:\Documents and Settings\user\Bureau\power2.txt"
    [string]$in = "C:\Documents and Settings\user\Bureau\power.txt"
    [string[]]$test = get-content $in
    
    Function replace{
    Foreach ($line in $import)
    {
    ForEach-Object {$test = $test-Replace($import[$valeur].amodif, $import[$valeur].modif)}
    $test > $outfinal
    $valeur++}
    }
    replace
    Merci pour l'aide que j'ai recu, meme si ca m'as pas forcément servi, c'est toujours bon pour le moral

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

Discussions similaires

  1. modification de fichier texte en shell
    Par jonathan1 dans le forum Linux
    Réponses: 29
    Dernier message: 02/07/2007, 15h04
  2. Création modification de fichiers texte
    Par thierrybatlle dans le forum WinDev
    Réponses: 4
    Dernier message: 04/04/2007, 15h37
  3. modification de fichier texte en batch
    Par ob1knob dans le forum Windows
    Réponses: 15
    Dernier message: 03/10/2006, 17h10
  4. Modification de fichier texte
    Par jiloup dans le forum C++
    Réponses: 3
    Dernier message: 28/12/2005, 19h28
  5. Modification de fichiers texte
    Par ratbiker dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2005, 20h51

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