Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[BATCH] Suppression lignes identiques
Auteur Message
Répondre en citant
Message [BATCH] Suppression lignes identiques 
Bonjour à tous (à toutes aussi :p)

Me revoilà avec un nouveau problème -_-'

Je rencontre un petit soucis dans mon script batch... J'aimerais supprimer les lignes identiques dans un fichier texte (ou à défaut créer un fichier texte ne contenant pas deux lignes identiques).

Voici mon fichier villes.txt:

lens
paris est
lens
lyon
lyon
bordeaux
nantes
bordeaux
lille
billet
paris
lens
lille
bordeaux
billet
paris
billet
laon
lens
lille
lille
lille
lens
lens


et j'aimerais obtenir en fichier de sortie le fichier out.txt suivant:

lens
paris est
lyon
bordeaux
nantes
lille
billet
paris
laon


J'ai essayé de deux manières différentes mais sans succès...

avec un find:

for /f "delims=" %%C in ('type D:\ville.txt') do (
find /c "%%C" D:\temp.txt
if errorlevel==0 echo %%C >> D:\out.txt
)

et avec deux for imbriqués:

for /f "delims=" %%C in ('D:\ville.txt') do(
for /f "delims=" %%D in ('D:\ville.txt') do(
if %%C==%%D do (
echo %%C>> D:\out.txt
)



Pouvez-vous s'il vous plaît corriger mes erreurs et/ou m'indiquer de nouvelles idées =)

Merci!



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [BATCH] Suppression lignes identiques 
up Okay



Répondre en citant
Message [BATCH] Suppression lignes identiques 
J'ai trouvé =)

echo > D:\out.txt
for /f "delims=" %%C in ('type D:\villes.txt') do (
find /c "%%C" D:\out.txt
if errorlevel==1 echo %%C >> D:\out.txt
)

voilà, j'espère que ça servira un jour :p



Répondre en citant
Message [BATCH] Suppression lignes identiques 
Je rencontre maintenant un autre problème sur ce même script...
Je dois maintenant comptabiliser la récurrence de chaque mot dans le fichier villes.txt, c'est à dire le nombre de fois où chaque ville est écrite

J'ai maintenant à ma disposition les fichiers villes.txt et out.txt

Mon objectif est d'obtenir ceci:

lens : 6
paris est : 1
lyon : 2
bordeaux : 3
nantes : 1
lille : 5
billet : 3
paris : 2
laon : 1

(dans un nouveau fichier que j'appellerai out2.txt)

J'ai pensé à un truc du genre:

set k=0
for /f "delims=" %%C in ('type D:\villes.txt') do (
for /f "delims=" %%D in ('type D:\out.txt') do (
if %%C==%%D set/A k+=1
)
echo %%C : %k% >> D:\out2.txt
)

quelqu'un a une idée de comment procéder?



Répondre en citant
Message [BATCH] Suppression lignes identiques 
Je connais la fonction "NB.SI" sous exel Very Happy mais ca va pas t'aidé Laughing

C'est marrent je viens de faire ca en math cette apres midi

Donc je sais le faire en TI-Basic :
Voila : sachant que L1 = liste de 50 nombres aléatoires entre 1 et 6
Code:
0->Z
For(A,1,50
If L1(A)=1
Z+1->Z
End
Disp Z


Voila sinon désolé je sais pas en batch mais ca doit etre dans le meme genre Mr. Green




______________________________________________________
http://www.YagoServer.net/
Visiter le site web du posteur Yahoo Messenger Skype
Répondre en citant
Message [BATCH] Suppression lignes identiques 
non pas vraiment =(
la syntaxe n'est pas du tout la même... :/

mais merci quand même! Wink



Répondre en citant
Message [BATCH] Suppression lignes identiques 
Suffit de traduire en batch ce qui donnerait un truc du genre :

Code:
set /a nbville=0
For /f %%A in ( blabla.txt ) do if %%A==ville set /a nbville=nbville + 1


voila pas sur que ca marche et que la syntaxe soit bonne je mi connait pas trop en boucle for Okay




______________________________________________________
http://www.YagoServer.net/
Visiter le site web du posteur Yahoo Messenger Skype
Répondre en citant
Message [BATCH] Suppression lignes identiques 
ça ne marchera pas... =(

Tout d'abord parce que tu passes par une seule boucle donc tu compares les lignes de ton fichier à une seule et unique variable (alors que je dois comparer toutes les lignes du fichier out.txt au fichier villes.txt)

Ensuite parce que tu rencontreras le même problème que moi (je pense) dans l'incrémentation de ta variable nbville.

Dans mon script:

set k=0
for /f "delims=" %%C in ('type D:\villes.txt') do (
for /f "delims=" %%D in ('type D:\out.txt') do (
if %%C==%%D set/A k+=1
)
echo %%C : %k% >> D:\out2.txt
)


La comparaison entre%%C et %%D se fait bien comme il faut (j'ai testé avec le script suivent):

set k=0
del D:\Rapport.txt
for /f "delims=" %%C in ('type D:\Rapport2.txt') do (
for /f "delims=" %%D in ('type D:\temp.txt') do (
if %%C==%%D echo égal
)
echo %%C : %k% >> D:\Rapport.txt
)

et il m'affiche bien "égal" quand %%C et %%D sont identiques.

Le problème se situe dans l'incrémentation de la variable de comptabilisation (k).
Serait-ce un bug? (impossibilité de mettre à jour une variable après un if imbriqué dans un for) ou une erreur de syntaxe? (oublie de parenthèses, quotes etc...)

Dans les deux cas, comment puis-je faire pour remédier à ce problème?

merci à ceux qui postent pour m'aider =)



Répondre en citant
Message [BATCH] Suppression lignes identiques 
je viens juste de trouver une solution!!!! =D

setlocal enabledelayedexpansion

set k=0
for /f "delims=" %%C in ('type D:\villes.txt') do (
for /f "delims=" %%D in ('type D:\out.txt') do (
if %%C==%%D call cpt.bat %k%
)
echo %%C : !k! >> D:\out2.txt
)

endlocal


:cpt

set /a k=%k%+1


voilà je passe par un autre bat qui lui incrémente ma variable
et j'utilise enabledelayedexpansion pour pouvoir récupérer ma variable dans la première boucle Wink



Message [BATCH] Suppression lignes identiques 


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