Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[RESOLU] Fusion de fichier
Auteur Message
Répondre en citant
Message [RESOLU] Fusion de fichier 
Bonjour,

Je suis en plein arrachage de cheveux, j'essaye de faire ceci en vba, mais le batch pourrai me sauver !!
Je vous expose mon problème

je suis en train de réaliser un script qui avance pas mal cependant je suis bloqué à une étape de fusion de fichier, je m'explique.

Alors mon script, me sort 3 fichiers ( j'ai le choix du format de sortie si ça peux aider txt,csv,xls)

fichier1.txt
toto
tata
titi
tutu
long
tutu

fichier2.txt
wowo
wawa
wiwi
wuwu
toxto
wuwu

fichier3.txt
roro
rara
riri
ruru
tixti
ruru

Donc je souhaiterais fusionner ces 3 fichiers en 3 parties dans un fichier en csv et de plus, je souhaiterais des conditions, si doublon supprimer la ligne, si les valeurs suivantes sont présentes les effacées la ligne cela devrait donner cela :

toto;wowo;roro
tata,wawa;rara
titi;wiwi;riri
tutu;wuwu;ruru
long;toxto;tixti <--cette ligne devra être supprimée car elle comprend la valeur long
tutu;wuwu;ruru <--idem à supprimer car elle est en double

Pouvez vous m'orienter me guider me sauver sur ce point ?

Merci Smile



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [RESOLU] Fusion de fichier 
Voilà une solution les fichiers sont nommée test1.txt test2.txt test3.txt. et le fichier final est sortie.txt

L'élimination des doublons utilise une technique personnel qui va fonctionner pour des valeurs tels que toto;tat;titi maintenant
pour d'autres valeurs à tester.

Mais l'idée est là Wink

Code:

::By SachaDee 2014

@echo off&cls
setlocal enabledelayedexpansion

del out.txt,tmp.txt 2>nul

call:merge test1.txt test2.txt
ren out.txt tmp.txt
call:merge tmp.txt test3.txt
call:killDouble out.txt
exit/b

:merge
set $c=1
(for /f "delims=" %%a in (%1) do (
  set $c1=1
  for /f "delims=" %%b in (%2) do (
    if !$c1!==!$c! echo %%a;%%b
    set /a $c1+=1
  )
  set /a $c+=1
))>out.txt

exit/b
 
:killdouble
for /f "delims=" %%a in (%1) do set #$#%%a=1
(for /f "delims=" %%a in ('set #$#') do (
   set $tmp=%%a
   echo !$tmp:~3!)) >sortie.txt


Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [RESOLU] Fusion de fichier 
Oh super ! j'analyse ce bout de code et je reviens faire le point


Maj:

Pour l'instant je ne comprends pas tout, mais laisse moi la nuit pour cogiter Wink de plus je viens de penser que j'ai oublier un élément.

Je comptais aussi supprimer tout les : présent dans mon fichier de sortie.



Répondre en citant
Message [RESOLU] Fusion de fichier 
J'avais oublié l'élimination de "long" dans mon code j'ai donc également ajouter l'élimination des ":"

Code corrigé :

Code:

::By SachaDee 2014

@echo off&cls
setlocal enabledelayedexpansion

del out.txt,tmp.txt 2>nul

call:merge test1.txt test2.txt
ren out.txt tmp.txt
call:merge tmp.txt test3.txt
call:killDouble out.txt

exit/b

:merge
set $c=1
(for /f "delims=" %%a in (%1) do (
  set $c1=1
  for /f "delims=" %%b in (%2) do (
    if !$c1!==!$c! echo %%a;%%b
    set /a $c1+=1
  )
  set /a $c+=1
))>out.txt

exit/b
 
:killdouble
for /f "delims=" %%a in (%1) do set #$#%%a=1
(for /f "delims=" %%a in ('set #$#') do (
   set $tmp=%%a
echo !$tmp:~3! | findstr /i /v /c:":" /c:"long"
)) >sortie.txt



Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message [RESOLU] Fusion de fichier 
Toujours pas eu le temps de me pencher dessus, je reviens vite Smile



Message [RESOLU] Fusion de fichier 


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