Création d'un script

maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 mai 2006 - 4 mai 2006 à 15:41
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 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 ^^

cordialement j ai grandement besoin d aide.

maxime

17 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
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.

CR
0
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 mai 2006
4 mai 2006 à 19:39
merci pr ton aide je testerai ca demain

encore merci !
0
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 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

j ai du mal avec les langague de cmd :)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
5 mai 2006 à 10:14
Effectivement, je t'ai donné un code VB6 pas du VBS !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 mai 2006
5 mai 2006 à 12:53
et ton code je l execute avec kel utilitaire ?

parceque j ai telecharger Visual_Basic_6.0_-VB6-_runtime_SP5.exe

et j ai ensuite renomé mon txt en vb6 LOOL

et ca marche pô :)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
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
0
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 mai 2006
5 mai 2006 à 14:06
n empeche que j aurai bien aimé que tu me dises comment executer un code vb6 :op

merci quand meme je te tiens au courant de la reussite ou non du code :)
0
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 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

il n aime pas le For je crois :)
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
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
0
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 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

mais pr cela :

"CN=fouchardrn
"CN=toto
"CN=est

j obtient cela :

rdrn
toto
=est

alors je ne comprends plus rien

HELP c bientot fini !! :) cordialement
0
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 mai 2006
9 mai 2006 à 15:52
up :op
0
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 mai 2006
10 mai 2006 à 08:19
up du matin :)
0
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 mai 2006
11 mai 2006 à 08:27
up up up les zami
0
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
11 mai 2006 à 08:50
pas de up sur ce forum, on est pas des sauvages !! (en plus ca marche pas )

While Not f1.AtEndOfStream
L = f1.ReadLine()
i = instr(L, ",")
f2.WriteLine( mid(Left(L,i-1),instr(1,L,"=")))
Wend

BasicInstinct
0
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 mai 2006
11 mai 2006 à 10:27
sorry pr les up mais le message privés est resté sans réponse j avais pas d'autre solution que d'attendre et attendre je ne pouvais pas

jvais tester tt ca
merci
0
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
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 ))

BasicInstinct
0
maxmorloks Messages postés 12 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 11 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

cordialement
0
Rejoignez-nous