Tom's Guide > Forum > Programmation > Modifier le contenu d'un fichier texte par BAT

Modifier le contenu d'un fichier texte par BAT

Forum Programmation : Modifier le contenu d'un fichier texte par BAT

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonsoir à tous je cherche à créer un fichier BAT qui me permettrais de modifier un fichier texte
"PLIGNES.txt" .
En effet je voudrais que le fichier bat me copie le contenu du fichier et créer un autre fichier
"SLIGNES.txt" afin que j'obtienne le texte entre les "====" sur une seul ligne :

AVANT:

Site : AENA_ROUTES_DE_TRARTAN Dest. : R Nb El : 40 G : 0 Cadrans = 53

Liste créé le : 08-01-2007 Date : 12/01/2007 13:45:02
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

BTR LOT ST CHRISTOPHE /QUARTIER Y
Affectation : réalisée = SF
>>> Date : 10 / 01 / 2007 <<< >>> Date : 10 / 01 / 2007 à 18:53:52 <<<
===========================================================================================================
Réf Client : 565 905 930 567 -> Nom : MONSIEUR ANCEL JULES
Adresse : QUARTIER YOYOYE EMPL :
Tronçon : 3-QUARTIER YOYOYE

ElTOURNEE Tar : 0440 Mat : 779 Nb Roues : 5

Libellé de l'anomalie :
----------------------------
IN CONFIRME HC HA
HP 287633

===========================================================================================================
Réf Client : 675 725 918 301 -> Nom : JEAN SARL
Adresse : QUARTIER MANSARDE CATALOGNE
Tronçon : 1-QUARTIER MANSARDE

ElTOURNEE Tar : 0140 Mat : 123 Nb Roues : 4
Identifiant CCTR ou CBE : 080523605791

Libellé de l'anomalie :
----------------------------
PER AU

===========================================================================================================

APRES AVOIR EXECUTE LE FICHIER BAT:

Réf Client : 565 905 930 567 -> Nom : MONSIEUR ANCEL JULES Tronçon : 3-QUARTIER YOYOYE ElTOURNEE Tar : 0440 Mat : 779 Nb Roues : 5Libellé de l'anomalie :----------------------------IN CONFIRME HC HA HP 287633

Réf Client : 675 725 918 301 -> Nom : JEAN SARL Adresse : QUARTIER MANSARDE CATALOGNETronçon : 1-QUARTIER MANSARDE ElTOURNEE Tar : 0140 Mat : 123 Nb Roues : 4 Identifiant CCTR ou CBE : 080523605791Libellé de l'anomalie :----------------------------PER AU

Merci beaucoup pour votre aide

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Pour lire et faire du traitement dans un fichier texte en batch, il faut utiliser la commande FOR /F.
http://fr.wikibooks.org/wiki/DOS/F [...] un_fichier

Répondre à CRicky

Merci pour ton info CRicky mais je suis un novice en dos et fichier bat, pourrait tu me donner le code pour utiliser la commande FOR/F, je n'arrive pas à ecrire le fichier bat malgré les info du lien que tu ma donné, merci d'avance pour ton aide

Répondre à WITER

Dans le lien il y a des exemples, je ne saurais pas t'expliquer mieux.

Répondre à CRicky

J'ai lu et compris toute la page indiqué et il est vrai qu'elle ne répond pas au problème de monsieur :) je suis dans le même cas j'aimerais supprimer plusieurs caractères d'un fichier texte automatiquement par l'intermediaire d'un batch ou mini programme en C++ je sais pas.

Répondre à klitzounet

Tu veux supprimer quoi ?
Dans tous les cas, le batch n'est pas adapté à la manipulation de fichier, il faut mieux passer sur quelque chose de plus évolué comme le python.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Python je connais pas du tout. Et enfait j'aimerais automatiser une tache que le blocnote fais très bien : le remplacement de caractère. Et plus précisément remplacer des caractères par... rien :) c'est pour ca que j'ai dis supprimer.

Répondre à klitzounet

Si tu fais un FOR /F sur toutes les lignes, que tu mets ta ligne dans %A et que tu souhaites supprimer "maChaine", il te suffit, au lieu d'utiliser %A%, d'utiliser %A:maChaine=%

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Ca a l'air d'être pas mal mais je suis incapable de le faire. Je ne sais pas du tout programmer en bat désolé. Merci quand même :) si un bon coeur voulait écrire rapidement les lignes complètes ca serais très gentil

Répondre à klitzounet

Il faut activer l'expansion retardée des variables (HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion mis à 0x00000001, ou cmd /V)

 
Code :
  1. @echo off > fichier2.txt
  2. for /F "delims=" %%A in (fichier1.txt) do(
  3. set var=%%A
  4. set var=!var:maChaine=!
  5. echo !var! >> fichier2.txt
  6. )


(non testé)

 

Attention aux caractères spéciaux comme ) où il faudra mettre ^) pour que l'interpréteur de commande ne l'interprète pas.


Message édité par CRicky le 03-07-2008 à 22:40:15
------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Okey merci beaucoup c'est super sympa :D par contre la dedans ou est ce que je met les caractères à remplacer (supprimer) ?
Et ton bat là va créer un nouveau fichier en fait pas éditer le premier c'est ca ?
A bientôt merci

Répondre à klitzounet

Oui, ça crée un nouveau fichier, mais il faut tester avant si l'algo est bon.

Tu remplaces maChaine par le caractère ou le mot que tu souhaites remplacer.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Bon ok j'ai testé ton truc ca créer bien le fichier2.txt mais il est vide :) il n'y a pas que le caractère maChaine qu'est supprimé apparemment lol

Répondre à klitzounet

Montre ton script et le contenu de fichier1.txt


Message édité par CRicky le 04-07-2008 à 23:35:36
------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Et bien dans fichier1.txt j'ai écris :

Code :
  1. titi toto tata



et dans ton script j'ai remplacé maChaine par toto :

Code :
  1. @echo off > fichier2.txt
  2. for /F "delims=" %%A in (fichier1.txt) do(
  3. set var=%%A
  4. set var=!var:toto=!
  5. echo !var! >> fichier2.txt
  6. )

Répondre à klitzounet

J'ai pas testé, mais ça doit fonctionner.

Je pense que tu n'as pas activé l'expansion retardé (qui n'est pas activé par défaut), je me trompe ? :)

Citation :

Il faut activer l'expansion retardée des variables (HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion mis à 0x00000001, ou cmd /V)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Il n'y a pas la ligne DelayedExpansion.
J'ai CompletionChar, DefaultColor, EnableExtensions et PathCompletionChar.
Mais je voulais créer ce soft pour un pote qui travaille dans l'armement et je pense pas qu'il aura accès à la base de registre :-S

Répondre à klitzounet

Par défaut la valeur n'est pas crée, il faut en créer une de type DWORD.

 

ps: si c'est pour un contexte professionnel, lâche le batch...


Message édité par CRicky le 05-07-2008 à 15:52:26
------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Ah tu pense que ca va être bloqué ? tant pis alors... :(
Merci quand même de ton aide en tout cas ;)
A bientôt peut-être

Répondre à klitzounet

Non ce n'est pas bloquant...
Il suffit de lancer l'invite de commande avec cmd /V et d'y lancer le fichier .bat

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

Et bien donc pourquoi me dis-tu de lâcher le batch dans un cadre pro ?
Le /V sert à quoi lorsque on lance l'invite de commande ?

Répondre à klitzounet

parce que ce n'est pas évident à maintenir, et que le codage est complexe pour ce qu'il faut faire...
pour le /v, fait un HELP CMD et tu auras la réponse:

Citation :

/V: ON Active l'expansion retardée des variables d'environnement en
utilisant ! comme délimitation.
Par exemple, /V: ON permet à !var! de développer la variable var à
l'exécution. La syntaxe var développe les variables lorsqu'elles sont
entrées, ce qui est différent lorsque utilisé à l'intérieur d'une
boucle FOR.
/V: OFF Désactive l'expansion retardée des variables d'environnement.


Message édité par CRicky le 05-07-2008 à 18:29:05
------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

OKey ba écoute c'est sympa d'avoir consacré tout ce temps pour moi :)
Je pense qu'on va clore le sujet là et encore merci à toi.

A bientôt peut-être

Répondre à klitzounet
Tom's Guide > Forum > Programmation > Modifier le contenu d'un fichier texte par BAT
Aller à :

Il y a 1062 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens