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 :

Remplacer champ dans un fichier txt à partir de variable d'entrée


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Par défaut Remplacer champ dans un fichier txt à partir de variable d'entrée
    Bonjour à tous,

    Voila mon problème.
    Je lance un .bat depuis la console et celui ci prend en argument une chaine de caractère.
    Je voudrais que ce bat prenne cette chaine de caractère et la remplace dans le fichier texte spécifique.
    Dans mon fichier texte je mettrais une chaine de caractère spéciale afin qu'il sache où remplacer.
    Pouvez vous m'aider?

    Merci de votre aide

    Tom

  2. #2
    Membre averti
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Par défaut
    Pas d'idée...?

  3. #3
    Membre averti
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Par défaut
    Alors j'ai une piste mais cela ne marche pas encore très bien...
    Dans mon fichier texte je met comme valeur "clé" à remplacer le dièse #.
    Ainsi dans mon .bat j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo off
    setlocal enableExtensions
    for /f "tokens=1* delims=#" %%1 in (C:\test.txt) do()
    endLocal
    Or cela ne remplace pas par ma variable d'entrée du script...
    Merci de votre aide

  4. #4
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    je crois que cette question a été posé plusieurs fois, utilise l'option "rechercher" du forum sinon voici 2 scripts qui te donneront des idées

  5. #5
    Membre averti
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Par défaut
    Bonjour,

    Merci pour la réponse mais pour ce que j'ai trouvé dans le forum, ce n'est pas ce que je souhaite faire et/ou lorsque ca s'y rapproche fortement ce n'est pas résolu.
    De plus le lien que tu me donne suppose d'avoir edlin d'installer or je veux faire cela en "basique", cad sans sed, edlin,...

    Merci pour votre aide,

    Tom

  6. #6
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495

  7. #7
    Membre averti
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Par défaut
    Merci bcp pour la réponse cependant je ne vois pas bien à quel moment le fichier est mis à jour...?
    Désolé je ne suis pas très bon en batch..
    Merci

    Tom

  8. #8
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    C'est pas grave.
    Sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo off
    cd.>c:\text2.txt
    for /f "tokens=1* delims=#" %%i in (C:\test.txt) do echo %%i%1%%j >> c:\text2.txt

  9. #9
    Membre averti
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Par défaut
    Merci pour cette info.
    Je viens de tester.
    Je pars d'un fichier toto.txt qui contient:
    C'est un test
    Voila
    Voili
    toto
    Je lance le batch contenant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo off
    for /f "tokens=1* delims=#" %%i in (C:\toto.txt) do echo  %%i%1%%j > c:\text2.txt
    avec "bonjour" en variable d'entrée
    Et j'obtiens dans text2.txt:
    " totobonjour
    "
    (sans les guillemets, c'est juste pour montrer les espaces avant et après et le retour à la ligne)
    Ca n'a pas l'air top...ou j'ai fait une erreur p-e.
    De plus, serait il possible d'ecrir dans le même ficheir plutot que d'en créer un autre?
    Merci d'avance
    Tom

  10. #10
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    J'ai édité entre-temps. J'avais rajouté une ligne et j'ai enlevé l'espace de trop.

  11. #11
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Citation Envoyé par ThomasParis Voir le message
    De plus, serait il possible d'ecrir dans le même ficheir plutot que d'en créer un autre?
    C'est possible, mais le comportement ne sera pas garanti. Il vaut mieux un fichier intermédiaire que tu pourras renommer après avoir effacé l'originale.

  12. #12
    Membre averti
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Par défaut
    Merci bcp,
    Cependant maintenant ca rajoute un espace en début de chaque ligne et "bonjour" à la fin de chaque ligne, mais cela est p-e normal...
    A vrai dire je ne voudrais insérer la chaine caractèred'entrée du batch ("bonjour" dans mon test) à la place d'un chaine de caractère spéciale (et unique) dans mon fichier .txt...
    Est ce possible?

    Merci d'avance

    Tom

  13. #13
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Citation Envoyé par ThomasParis Voir le message
    Dans mon fichier texte je met comme valeur "clé" à remplacer le dièse #.

  14. #14
    Membre averti
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Par défaut
    haha ok au temps pour moi!
    Cependant je fais un test avec un fichier d'entré:
    C'est un test #
    Voila
    Voili
    toto

    et en lançant le script avec la variable d'entrée "bonjour"
    J'obtiens:

    " C'est un test bonjour
    Voilabonjour
    Voilibonjour
    totobonjour
    "

    Ai je loupé qqchose?
    Merci!

  15. #15
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Oui,

    En fait, je me suis basé sur ce que tu présentais au début et qui laisse supposer que tes lignes sont du style "chaine1#chaine2".
    Si c'est pas le cas, il te faut le compléter pour qu'il fonctionne comme tu veux.
    Sinon l'utilisation de la première piste en lien est une bonne alternative.

Discussions similaires

  1. [WD18] Ecrire dans un fichier txt à partir d'une requête SQL
    Par Blooster dans le forum WinDev
    Réponses: 4
    Dernier message: 29/05/2013, 11h03
  2. [Débutant] Mettre des intervalles dans un fichier txt à partir d'un xls
    Par Shinto dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/05/2011, 08h40
  3. Réponses: 1
    Dernier message: 31/03/2011, 18h16
  4. Compter les occurences d'un champ dans un fichier txt
    Par JeuneJavaiste dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 10/11/2008, 07h52
  5. Réponses: 8
    Dernier message: 07/09/2006, 11h43

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