Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[RÉSOLU] concaténer deux fichiers textes côte
Auteur Message
Répondre en citant
Message [RÉSOLU] concaténer deux fichiers textes côte 
Bonjour,

voilà un moment que je galère avec ce batch qui pourtant doit être simple.

J'ai deux fichiers textes qui comportent exactement le même nombre de lignes (issus d'une extraction qui capture des données en deux fois, partie gauche, puis partie droite)

Fichier1:
A1
B1
C1
D1

Fichier2
A2
B2
C2
D2

Résultat souhaité:
A1A2
B1B2
C1C2
D1D2

Voici le début de mon batch:
setlocal enabledelayedexpansion
set repertoire_source=c:\temp
Set FichierL=c:\temp\725_L.txt
Set FichierR=c:\temp\725_R.txt
set fichier_resultat=c:\temp\resultat.txt

del %fichier_resultat%
pause
for /f "tokens=1 delims=" %%a in (%FichierL%) do echo %%a >> %fichier_resultat%

Pour le moment, j'inscris ligne à ligne les infos dans le fichier résultat, mais uniquement la partie hauche
Une seconde boucle m'ajoute la partie droite, mais en dessous. Mad

Donc si une ame charitable veut bien me donner un coup de mains, ce serait top

merci par avance



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [RÉSOLU] concaténer deux fichiers textes côte 
essai ce code: (supprime le label texte, change tes var liens avant et dis. )

par contre, les deux texte doivent avoir le meme nombre de lignes. (est ce un probleme?)

Code:



@Title
@Echo off

REM http://batch.xoo.it/t3446-Batch-fichier-texte-concat-ner-deux-fichiers-textes-c-te.htm


Set FichierL=%~dp0test1.txt
Set FichierR=%~dp0test2.txt
set sortie=%~dp0resultat.txt

if not exist "%FichierL%" Call:texte

::
setlocal enabledelayedexpansion

set /a ComptL=0

cd.> "%sortie%"

for /f "tokens=* delims=" %%l in ('Type "%FichierL%"') do (
   set /a ComptL+=1
   set ligneL=%%l

   set /a ComptR=0
   for /f "tokens=* delims=" %%r in ('Type "%FichierR%"') do (
      set /a ComptR+=1
      set ligneR=%%r

      if !ComptL!==!ComptR! echo. !ligneL! !ligneR!
   )
)>> "%sortie%"



Start "" /W "%sortie%"
del "%sortie%"

EndLocal
::pause
exit






:texte
(
echo.A1
echo.B1
echo.C1
echo.D1
)> "%FichierL%"
(
echo.A2
echo.B2
echo.C2
echo.D2
)> "%FichierR%"
Goto:eof







______________________________________________________
la vie simple c'est pas facile
Répondre en citant
Message [RÉSOLU] concaténer deux fichiers textes côte 
Merci pour ce code, je vais tester. Les deux fichiers ont exactement le même nombre de lilgnes, c'est une capture spool as400 splittée en deux (gauche puis droite)

Je vous dis ça demain !!



Répondre en citant
Message [RÉSOLU] concaténer deux fichiers textes côte 
Top, ça marche nickel, un peu lent mais çà fonctionne.

Sauf que je trouve

A1 A2
B1 B2
C1 C2
D1 D2
En fait, il me faut les x caractères de gauche du fichier left et y caractères de droite du fichier Right

Le fichier left termine par un espace, et le right commence par un espace. Tous deux doivent être supprimés

Cette commande existe t elle en batch?

merci !!



Répondre en citant
Message [RÉSOLU] concaténer deux fichiers textes côte 
Bon, j'ai trouvé pour les espaces à supprimer avec la commande set ligneL=!ligneL:~0,131!

En revanche, le batch extrémement long à s'exécuter, n'y aurait il pas un code plus rapide?
Le code pour copie des fichiers txt bout à bout (les uns à la suite des autres dans le sens de la hauteur) est quasi instantané

Merci !!!



Répondre en citant
Message [RÉSOLU] concaténer deux fichiers textes côte 
Pour gagner du temps tu peux éliminer le "type"



[code]

Amicalementfor /f "tokens=* delims=" %%l in ("%FichierL%") do (
set /a ComptL+=1
set ligneL=%%l

set /a ComptR=0
for /f "tokens=* delims=" %%r in ("%FichierR%") do (
set /a ComptR+=1
set ligneR=%%r


if !ComptL!==!ComptR! echo. !ligneL! !ligneR!
)
)>> "%sortie%"

[/code]




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [RÉSOLU] concaténer deux fichiers textes côte 
Merci pour ce retour, mais c'est tout de même très long.

ne peut on pas partir sur la logique suivante?
for /f "tokens=1 delims=" %%a in (%FichierL%) do echo %%a >> %fichier_resultat%

Mais au lieu d'écrire direct dans le fichier, on sctocke dans une variable

un truc du genre:
for /f "tokens=1 delims=" %%a in (%FichierL%) do Set Variable1=%Variable1% %%a

on reboucle sur l'autre fichier puis on concatene les deux variables

Celà revient à stocker l'intégralité du premier dans fichier dans une variable1
Idem pour l'autre dans une variable 2
Puis on ecrit le concatené des deux variables dans un fichier résultat??

merci !!!



Répondre en citant
Message [RÉSOLU] concaténer deux fichiers textes côte 
essais cette methode, et dis nous si c'est plus rapide.
ps: j'ai volontairement laissé la premiere methode, tu peus l'effacer.


Code:


@Title Concatener deux fichiers.
@Echo off

REM http://batch.xoo.it/t3446-Batch-fichier-texte-concat-ner-deux-fichiers-textes-c-te.htm


Set FichierL=%~dp0test1.txt
Set FichierR=%~dp0test2.txt
set sortie=%~dp0resultat.txt

if not exist "%FichierL%" Call:texte

Call:Traitement2

Start "" /W "%sortie%"
del "%sortie%"
EndLocal
::pause
exit


:Traitement1
::
setlocal enabledelayedexpansion

set /a ComptL=0
cd.> "%sortie%"
for /f "tokens=* delims=" %%l in ('Type "%FichierL%"') do (
   set /a ComptL+=1
   set ligneL=%%l
   
   set /a ComptR=0
   for /f "tokens=* delims=" %%r in ('Type "%FichierR%"') do (
      set /a ComptR+=1
      set ligneR=%%r
   
      if !ComptL!==!ComptR! echo. !ligneL! !ligneR!
   )
)>> "%sortie%"
Goto:eof



:Traitement2
::
setlocal enabledelayedexpansion

cd.> "%sortie%"
set /a ComptA=0
for /f "tokens=* delims=" %%l in ('Type "%FichierL%"') do (
   set /a ComptA+=1
   set ligneL!ComptA!=%%l
)
set n1=!ComptA!
set /a ComptA=0
for /f "tokens=* delims=" %%l in ('Type "%FichierR%"') do (
   set /a ComptA+=1
   set ligneR!ComptA!=%%l
)
set n2=!ComptA!

for /L %%c in (1,1,%n1%) do (
   echo. !ligneL%%c! - !ligneR%%c!
)>> "%sortie%"
Goto:eof





:Traitement3
::
setlocal enabledelayedexpansion
cd.> "%sortie%"
Call:boucle "L" &Call:boucle "R"
for /L %%c in (1,1,%nl%) do (echo. !ligneL%%c! - !ligneR%%c!)>> "%sortie%"
Goto:eof

:boucle
set /a ComptA=0
for /f "tokens=* delims=" %%l in ('Type "!Fichier%~1!"') do (set /a ComptA+=1 &set ligne%~1!ComptA!=%%l)
set nl=!ComptA!
Goto:eof






:texte
(
echo.A1
echo.B1
echo.C1
echo.D1
)> "%FichierL%"
(
echo.A2
echo.B2
echo.C2
echo.D2
)> "%FichierR%"
Goto:eof






Dernière édition par Isnala le Ven 31 Mai 2013 - 21:08; édité 1 fois

______________________________________________________
la vie simple c'est pas facile
Répondre en citant
Message [RÉSOLU] concaténer deux fichiers textes côte 
Merci. Ca va beaucoup mieux, c'est plus rapide.

Merci encore !!!



Répondre en citant
Message [RÉSOLU] concaténer deux fichiers textes côte 
Je passe le sujet en résolu Wink




______________________________________________________


L'ignorance est un fléau qui engendre la haine et la mort
La connaissance est une arme qui surpasse toutes les autres
Partagez votre savoir, sinon il sera perdu à jamais
Message [RÉSOLU] concaténer deux fichiers textes côte 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch