Rechercher : dans
Par :

Concaténer des fichiers TXT

Dernière réponse le 18 aoû 2008 à 16:06:51 Angy, le 11 fév 2005 à 10:40:12 
 Signaler ce message aux modérateurs

Bonjour à tous,

Je souhait concatener le contenu de plusieurs fichier TXT en un seul fichier TXT ou bien XLS...

Par contre là ou se pose le problème (car avec le soft Concat14fr j'ai déjà réussi à faire cela) il faudrai que sur chaque ligne du fichier récap figure le nom du fichier d'origine !

Est-ce possible ?

Merci par avance

Angy

Configuration: Windows

1

Aki, le 12 fév 2005 à 10:06:30

Salut,

Il serait utile de préciser dans quel language tu veux faire ça.

Bon weekend

Répondre à Aki

2

Angy, le 12 fév 2005 à 20:51:17

Bonjour,

Tout dabord un grand merci d'avoir pris le temps de me répondre.

Pour répondre a ta question :
Peux-importe le language, j'aimerais connaitre simplement une méthode pour laquelle cela fonctionne !

En effet, j'arrive à concaténer les fichiers mais pas à faire que le nom du fichier d'origine soit repris sur chaque ligne comme l'exemple si dessous dans le fichier "résultat" :

xxxxx xxx toto.txt
xxxxx xxx toto.txt
xxxxx xxx toto.txt
xxxxx xxx anonyme.txt
xxxxx xxx anonyme.txt

Si tu as une idée pour m'orienté vers une méthode qui me donnera ce résultat, merci par avance.

Angy

Répondre à Angy

3

Zebechamel, le 13 fév 2005 à 01:11:08

Si tu possedes linux je peux te faire un petit script qui peut à la fois te concatener tes fichiers txt et modifier le nom du fichier.
@+

Répondre à Zebechamel

4

Angy, le 13 fév 2005 à 08:21:19

Bonjour,

Je suis sous windows mais mon conjoint à un pc au travail qui tourne sous linux alors pourquoi pas, si cela peut me donner mon résultat...

J'ai eu beau chercher, tester, retester, je n'arrive pas à faire que le nom du fichier d'origine siot repris dans le fichier "récapitulif" !!! et ce qui serait bien c'est qu'il soit repris sur chaque ligne le concernant...

Toto.txt et Anonyme.txt sont deux fichiers par exemple à concatener ensemble (ca j'y arrive sans problème) mais je souhaiterais avior le résultat suivant :

xxxxx xxx toto.txt
xxxxx xxx toto.txt
xxxxx xxx toto.txt
xxxxx xxx anonyme.txt
xxxxx xxx anonyme.txt

C'est une colle qu'on m'a posé et la pour moi c'est pire que de la SuperGlu 3 ;-)

Peux-tu me dire si cela est possible ?

Merci en tout cas pour ton aide

ANgy

Répondre à Angy

7

aldo13, le 13 fév 2005 à 11:08:11

Salut ,

Regarde j'ai fais un petit programme il est ici :

http://shinetell.free.fr/concat2.exe

premier boutton => premier fichier
2eme => 2eme
3eme => sauvegarde


sans garantie.

Répondre à aldo13

8

angy, le 13 fév 2005 à 11:48:02

Génial !!! mais... et oui encore un mais.

En effet c'est tout à fait le résultat que je veux obtenir mais j'ai 580 fichiers à traiter.

Peux-tu me dire ce qu'il est de ton programme ? Puis-je en connaitre les sources du programme ? Et en quel language il a été écrit ?

En tout cas merci énormément pour ton aide et le temps passé pour moi.

J'aimerai avior un jour ton niveau mais en programmation je débute a peine donc c'est pas demain la veille... :-)

Angy

Répondre à angy

10

aldo13, le 13 fév 2005 à 14:04:06

Ok c'etait fait avec Borland C Builder ,
j'ai fais une nouvelle version avec Delphi ,
la tu peux mettre plus de 2 fichiers , en cliquant chaque
fois sur le premier bouton .

J'ai laissé les sources dans le zip , il n'y a pas de gestion des
erreurs , les lignes vierges sont pas traitées ,
et j'ai pas bcp testé.

http://shinetell.free.fr/monconcat.zip

Répondre à aldo13

11

Angy, le 13 fév 2005 à 14:13:11

Tu es super !!!!

Merci beaucoup, c'est vraiment ca que je voulais obtenir. Tu as fait du super boulot, je viens de tester avec 10 fichiers et ca marche.

J'espère qeu cela ne t'a pas pris trop de temps.

Je vais dorénavant essayé de comprendre les sources après avoir trouvé le moyen d'ouvrir tes fichiers... ;-)

A bientôt et Merci encore !!!

Angy

Répondre à Angy

13

Angy, le 13 fév 2005 à 14:18:28

Une autre question mais qui a rien a voir avec le problème :

Combien de temps faut -il pour maitriser la programmation de base ?

Merci par avance

Angy

Répondre à Angy

14

aldo13, le 13 fév 2005 à 14:43:42

Angy ,

Difficile malgré tout de repondre a ca ,
j'ai commencé en C sous Linux , donc rien a voir avec
les outils comme Visual C ou les produits RAD Borland
maintenant pour maitriser les bases de la programmation,
je dirais au miminum 1 an , mais tu peux tres bien
telecharger par exemple delphi 6 perso qui est gratos ,
et en etudiant les exemples avancer rapidement.

voici 2 ou 3 bonnes adresses :

codeguru.com
codeproject.com
sourceforge.net
aldo13

etc etc

bye bye

Répondre à aldo13

15

angy21, le 13 fév 2005 à 14:54:13

Re...

Pour l'instant je m'attaque à Visual Basic après avoir commencé par les macros enregistrées mais je sans que le chemin sera long et semé d'embuches mais quand je vois le travail que tu as pu faire cela m'encourage à tenir bon. Et comme je ne suis pas du genre à baisser les bras je devrais y arriver.

Je vais aller regarder les liens que tu m'as envoyé

En tout cas je tenais à te remercier à nouveau pour ta précieuse aide.

BOn dimanche après midi

Angy
Angy qui veut mettre plus de flèches à son arc
Tout problème à 1 solution mais le + dur est de la trouver !­

Répondre à angy21

16

angy21, le 14 fév 2005 à 13:45:27

Bonjour,

Je me permet de revenir vers toi afin de te poser une dernière question :

est-ce que tu penses qu'il est possible d'optenir le résultat que donne ton programme mais avec le language dos ?

J'ai reussi à concaténer mais pas à rajouter le nom de fichier...

Merci par avance
Angy qui veut mettre plus de flèches à son arc
Tout problème à 1 solution mais le + dur est de la trouver !­

Répondre à angy21

5

random, le 13 fév 2005 à 09:12:10

Dos fais ca tres bien
tu mets tes fichiers dans un répertoire
tu ecrits un batch
dir >recap1.txt
puis copy recap1.txt+fic1.txt...+ficn.txt recap.txt
del recap1.txt
elle est pas belle, la vie ?

Répondre à random

6

Angy, le 13 fév 2005 à 09:42:09

Merci beaucoup pour ton aide, mais malheureusement cela ne donne pas encore tout à fait l'effet escompté.

En effet j'avais moi meme testé le concaténé en Dos, ce qui marche très bien mais je n'arrive toujours pas à faire que chaque ligne des fichiers d'origines reprenne le nom du fichier d'origine à la fin de chaque ligne...

Par exemple j'ai deux fichiers toto.txt et anonyme.txt avec chacun 2900 lignes par fichier et j'aimerai quand les concaténant j'obtienne un fichier récap avec au bout des lignes du fichier toto.txt et bien son nom "toto.txt" et idem pour les lignes du fichier "anonyme.txt".

xxxxx xxx toto.txt
xxxxx xxx toto.txt
xxxxx xxx toto.txt
xxxxx xxx anonyme.txt
xxxxx xxx anonyme.txt

Je sais qu'il est très simple de le faire avec Concat14fr et Excel mais le problème c'est que j'ai 580 fichiers avec chacun 2900 lignes ce qui fait qu'Excel ne peux pas et vu le nombre de fichier cela ferait un lourd travail c'est poru cela que je cherche une solution un peu plus simple.

Merci en tout cas pour ton aide

Angy

Répondre à Angy

9

Ravachol, le 13 fév 2005 à 14:01:58

Salut,
Voici un petit script sous GNU/Linux.
Comme le préconisait random créé un fichier contenant le nom de tes fichiers texte, en admettant qu'ils soient tous placés dans le même répertoire tu fais: ls *.txt > liste.txt, par exemple.
Ensuite depuis ce même répertoire tu lances le script de cette façon: ./concat liste.txt recap.txt
Code du script:

#!/bin/bash
# Usage ./concat ListeDeFichiers FichierRecap
# Réglage du retour chariot comme seul séparateur, lors de l'expansion
IFS=$'\n'
# Traitement des fichiers contenus dans le premier argument de la ligne de cde
for Fichier in `cat $1`
do
  # Traitement des lignes pour chaque fichier
   for Ligne in `cat $Fichier`
   do
     # Concaténation dans le fichier passé en deuxième argument
      echo $Ligne $Fichier >> $2
   done
done

J'ai testé sur une dizaine de fichiers d'une centaine de lignes chacun et ça fonctionne.

A++ L'homme n'est pas fait pour le travail et la preuve,
c'est que ça le fatigue. Tristan Bernard

Répondre à Ravachol

12

angy, le 13 fév 2005 à 14:17:18

Merci pour ton aide, je ne peux pas tester pour l'isntant car c'est mon zom qui maitrise Linux mais je verrais ce soir avec lui.

De plus aldo m'a crée un programme qui donne le résultat que je cherchais.

Je te remercie en tout cas pour ton aide.

Angy

Répondre à angy

17

random, le 14 fév 2005 à 16:24:46

Essaye ca

Function fichier(x As String)

Dim dd As Variant
Dim lin As String
Open "c:\@mesdoc\resu.txt" For Output As #2
On Error GoTo machin
ChDir x
dd = Dir(x & "\*.txt")

Do Until dd = ""


Open dd For Input As #1
Do While Not EOF(1)
Input #1, lin
Write #2, lin & " " & dd
Loop
Close #1
dd = Dir
Loop
machin:
Close #2

End Function
tu mets ta fonction en vba
tu l'appelles sous la fenetre resultat
print fichier(directory par exemple "c:\machin\chouette")
avant tu crées une directory
c:\@mesdoc\
à al fin dans cette rirectory tu retrouveras ton fichier sous le nom de resul

pb résiduel tes lignes seront enacadrées de guillemets
sous excel remplacer " pr rien
elle est pas belle, la vie ?

Répondre à random

18

angy21, le 14 fév 2005 à 17:05:12

Je n'arrive pas à m'en servir... je suis vraiment nul !!!

Tant pis, mais merci quand même.
Angy qui veut mettre plus de flèches à son arc
Tout problème à 1 solution mais le + dur est de la trouver !­

Répondre à angy21

19

random, le 14 fév 2005 à 17:17:43

Dans excel tu fais alt f11
puis insertion module
tu copies le texte fe la fonction
puis affichage fenêtre excécution
elle est pas belle, la vie ?

Répondre à random

20

angy21, le 14 fév 2005 à 17:33:31

C'est bien ce que j'avais fait mais cela ne me donne rien...

- j'ai bien crée un répertoire dans C: @mesdoc
- dedans j'ai mis mes fichiers .txt que je veux voir concaténer
- j'ai ouvert excel et mis tes codes dans Visual Basic (je l'avais mis dans feuil1 mais après ton deuxième post je l'ai refait en insérant un module puis en copiant colant tes codes)...
- j'ai lance par affichage fênetre exécution

Ce qui a pour effet de m'ouvrir sous la fenetre de droite une fenetre exécution mais chez tout...

Te tracasse pas, le programme d'aldo fonctionne très bien mais j'aurais voulu réussir avec une méthode que je maitrise car la programmation ca me dépasse pour l'instant.

En tout cas je te remercie pour ton aide
Angy qui veut mettre plus de flèches à son arc
Tout problème à 1 solution mais le + dur est de la trouver !­

Répondre à angy21

21

Keroz, le 8 déc 2006 à 17:13:03

Ca tient sur unigne de commande si on utilise pas les variables...

rem repertoire ou se trouve les fichiers
set repertoire_source=c:\temp
rem fichier de resultat
set fichier_resultat=c:\resultat.txt

rem pour chaque fichier texte du repertoire, on le met dans i
rem ensuite pour chaque ligne de ce fichier, on la met dans a
rem puis redirige un echo des variables a et i vers le fichier de resultat
rem ca va s executer tant qu il y a des lignes dans le fichier et tant qu'il y a des fichiers
for /f %%i in ('dir /b %repertoire_source%\*.txt') do for /f "tokens=1 delims=" %%a in (%repertoire_source%\%%i) do echo %%a %%i >> %fichier_resultat%


Enfin tu dois maitriser maintenant...

Répondre à Keroz

22

arnauldl, le 11 mar 2008 à 17:53:48
  • +1

Bonjour,

Sinon, il y a plus simple en Dos :

copy rep/* merge.txt

.. et le tour est joué !

Répondre à arnauldl

23

Solune44, le 27 jun 2008 à 15:55:20

Bonjour,

J'ai exactement la même ploblématique que Angy21.
J'aimerais un plus de précision sur votre solution.
rep = nom du répertoire où se trouvent les fichiers ?

J'ai essayé comme çà :

copy monrepertoire/* merge.txt mais ça ne marche pas !!

Pourriez-vous m'aider SVP ?

Merci

Répondre à Solune44

24

 cricri, le 18 aoû 2008 à 16:06:51
  • +2

Bonjour,

la solution d'Arnaud marche très bien chez moi, mais en mettant \ au lieu de /.
C'est-à-dire dans ton cas :
opy monrepertoire\* merge.txt

bon courage

Répondre à cricri