maxmorloks
Messages postés12Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention11 mai 2006
-
4 mai 2006 à 15:41
maxmorloks
Messages postés12Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention11 mai 2006
-
11 mai 2006 à 11:22
bonjour, j ai cette chaine de caractere dans un fichier txt contenant 2000 lignes:
"CN=toto,OU=etudiant,DC=owned,DC=fr"
et j aimerai pour chaque ligne extraire la valeur du CN donc ici "toto" et la mettre dans un 2ème txt ou alors carémant suprimer tt le reste de la ligne je m en fiche.
mais pour mes 2000 lignes il me faut garder a chaque fois la valeur du CN.
je precise quand meme que ce n est pas toujours toto ^^
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 4 mai 2006 à 18:11
Dim L As String, i As Long, Buffer As String, FN1 As Long ,FN2 As Long
FN1 = FreeFile ' Recherche du prochain N° de fichier dispo
Open "Source.txt" For Input As FN1 ' Ouvre le fichier source en lecture
FN2 = FreeFile ' Recherche du prochain N° de fichier dispo
Open "Destination.txt" For Output As FN2 ' Ouvre le fichier destination en ecrite
While Not EOF(FN1) ' Boucle sur l'intégralité du fichier source
Line Input #FN1, L ' Lecture de la ligne suivante
i = instr(L, ",") ' Recherche de la position de la 1ere virgule dans la ligne
If i<>0 Then ' Si on a trouvé une virgule ...
Print #2, Left$(L,i-1) ' ... on écrit le bout de ligne qui la précède ...
Else ' ... sinon ...
Print #2, L ' ... on écrit toute la ligne
End If
Wend
Close #FN1 ' Fermeture du fichier source
Close #FN2 ' Fermeture du fichier destination
Voila, j'ai pas testé mais cela devrait être OK.
Si tu es sûr d'avoir toujours une virgule dans tes lignes, tu peux te passer du bloc "If ... Else ... End If" et mettre simplement la ligne "Print #2, Left$(L,i-1)" à la place.
maxmorloks
Messages postés12Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention11 mai 2006 5 mai 2006 à 08:30
Dim L As String, i As Long, Buffer As String, FN1 As Long ,FN2 As Long
FN1 = FreeFile ' Recherche du prochain N° de fichier dispo
Open "C:\users.txt" For Input As FN1 ' Ouvre le fichier source en lecture
FN2 = FreeFile ' Recherche du prochain N° de fichier dispo
Open "C:\Destination.txt" For Output As FN2 ' Ouvre le fichier destination en ecrite
While Not EOF(FN1) ' Boucle sur l'intégralité du fichier source
Line Input #FN1, L ' Lecture de la ligne suivante
i = instr(L, ",") ' Recherche de la position de la 1ere virgule dans la ligne
Print #2, Left$(L,i-1)
Wend
Close #FN1 ' Fermeture du fichier source
Close #FN2 ' Fermeture du fichier destination
voila ce que j ai modifié et mit dans un fichier vbs
mais à l execution ca me met une erreur ligne 1 caractère 7
ca se trouve ce n est meme pas en tant que vbs qu'il faut le lancer.
help help
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 5 mai 2006 à 13:57
On va convertir mon code en VBScript :
Dim L , i , FN1 ,FN2
FN1 = FreeFile ' Recherche du prochain N° de fichier dispo
Open "C:\users.txt" For Input As FN1 ' Ouvre le fichier source en lecture
FN2 = FreeFile ' Recherche du prochain N° de fichier dispo
Open "C:\Destination.txt" For Output As FN2 ' Ouvre le fichier destination en ecrite
While Not EOF(FN1) ' Boucle sur l'intégralité du fichier source
Line Input #FN1, L ' Lecture de la ligne suivante
i = instr(L, ",") ' Recherche de la position de la 1ere virgule dans la ligne
Print #2, Left(L,i-1)
Wend
Close #FN1 ' Fermeture du fichier source
Close #FN2 ' Fermeture du fichier destination
maxmorloks
Messages postés12Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention11 mai 2006 5 mai 2006 à 14:45
Dim L , i , FN1 ,FN2
FN1 = FreeFile
Open "users.txt" For Input As FN1
FN2 = FreeFile
Open "Destination.txt" For Output As FN2
While Not EOF(FN1)
Line Input #FN1, L
i = instr(L, ",")
Print #2, Left(L,i-1)
Wend
Close #FN1
Close #FN2
erreur ligne 3 caractère 8
fin d instruction attendue
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 5 mai 2006 à 15:50
voici un VBScript fonctionnel ...
Const ForReading 1, ForWriting 2
Dim L , i, fso,f1,f2
set fso = CreateObject("Scripting.FileSystemObject")
set f1 = fso.OpenTextFile("users.txt",ForReading)
set fso = CreateObject("Scripting.FileSystemObject")
set f2 = fso.OpenTextFile("Destination.txt",ForWriting,True)
While Not f1.AtEndOfStream
L = f1.ReadLine()
i = instr(L, ",")
f2.WriteLine( Left(L,i-1))
Wend
maxmorloks
Messages postés12Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention11 mai 2006 9 mai 2006 à 13:17
salut
ton script marche super bien il me donne ces lignes la maintenant :
"CN=toto
le probleme c est qu il me faut uniquemene toto !!!
j ai essayer avec quelque modif:
Const ForReading 1, ForWriting 2
Dim L , i, fso,f1,f2
set fso = CreateObject("Scripting.FileSystemObject")
set f1 = fso.OpenTextFile("user2.txt",ForReading)
set fso = CreateObject("Scripting.FileSystemObject")
set f2 = fso.OpenTextFile("Dest2.txt",ForWriting,True)
While Not f1.AtEndOfStream
L = f1.ReadLine()
i = instr(L,"=")
f2.WriteLine( Right(L,i))
Wend
BasicInstinct
Messages postés1470Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention20 octobre 201412 11 mai 2006 à 10:44
bah ou c'est normal, la plupart des utilisateurs ne repondent pas aux messages privés (normal, on est pas a disposition)
ceci est un forum, donc c'est normal d'attendre (y'a que sur JV qu'ils ne trouvent pas normal de pas avoir de reponses dans les 5min alors que les msg sont postés a 4h du mat).
Si tu veux des reponses plus rapide, tu as le chat.
petite correction sur ce que je t'ai dit :
f2.WriteLine( mid(Left(L,i-1),instr(1,L,"=") +1 ))
maxmorloks
Messages postés12Date d'inscriptionjeudi 4 mai 2006StatutMembreDernière intervention11 mai 2006 11 mai 2006 à 11:22
non mais je suis pas un robot
l impatiente ca existe et je ne savais pas qu'on ne pouvais pas faire de up
point bar je suis mis au courant dorénavant et encore merci pr ton script qui va me faciliter la vie