Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Methode de lecture fichier CSV

3 réponses
Avatar
fxd
Bonjour,
je recherche a faire un vbscript pour une recraetion massive de user dans
l'ad a partir d'un lliste d'utilisateur en user.csv.
Mes questions pour ce faire sont :

- Comment ouvrir ce fichier en lecture ?
j'ai bien trouvé du code sur internet mais ceux-ci utilise pas les mmes
methodes ou fonctions : soit creation objet FSO ou utilisation de freefile
...
- apres je dois acquerrir une ligne par ligne sous format string, ma
question la est dois-je plutot utiliser la function instr ou la function
split ?

Merci de vos aides

Cdlt,
FXD

3 réponses

Avatar
~Jean-Marc~ [MVP]
Salutations *fxd* !
Dans <news:
tu nous disais :
Bonjour,
je recherche a faire un vbscript pour une recraetion massive de user
dans l'ad a partir d'un lliste d'utilisateur en user.csv.
Mes questions pour ce faire sont :

- Comment ouvrir ce fichier en lecture ?
j'ai bien trouvé du code sur internet mais ceux-ci utilise pas les
mmes methodes ou fonctions : soit creation objet FSO ou utilisation
de freefile ...
- apres je dois acquerrir une ligne par ligne sous format string, ma
question la est dois-je plutot utiliser la function instr ou la
function split ?


Bonjour,

Tout dépends du contenu de ton fichier CSV

Si tu as des valeurs séparées par des ";" avec un positionnement
identique sur chaque ligne, je te conseille le split.

Pour l'ouverture de ton fichier en lecture, on trouve plein d'exemples
efficaces sur internet. (chez JCB, au hasard ;-) )

Petit exemple :

Const ForReading = 1
Dim fso, TempLine, fsrce
Const srce = "c:repertoireuser.csv"

If not fso.FileExists(srce) Then
wscript.echo "Le fichier " & srce & " n'existe pas"
wscript.quit
End If

Set fsrce=fso.OpenTextFile(srce, ForReading)

While not fsrce.AtEndOfStream
TempLine=fsrce.ReadLine

' Ici tu traites TempLine (par split ?)

Next
Wend
fsrce.close

Bon amusement ;-)

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/

Avatar
~Jean-Marc~ [MVP]
Salutations *~Jean-Marc~ [MVP]* !
Dans <news:eHEB$
tu nous disais :

Oups,

J'ai oublié fso...

Le bon code :

Const ForReading = 1
Dim fso, TempLine, fsrce
Const srce = "c:repertoireuser.csv"

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

If not fso.FileExists(srce) Then
wscript.echo "Le fichier " & srce & " n'existe pas"
wscript.quit
End If

Set fsrce=fso.OpenTextFile(srce, ForReading)

While not fsrce.AtEndOfStream
TempLine=fsrce.ReadLine

' Ici tu traites TempLine (par split ?)

Next
Wend
fsrce.close

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/
Avatar
Jean
Bonjour,
je recherche a faire un vbscript pour une recraetion massive de user dans
l'ad a partir d'un lliste d'utilisateur en user.csv.
Mes questions pour ce faire sont :

- Comment ouvrir ce fichier en lecture ?
j'ai bien trouvé du code sur internet mais ceux-ci utilise pas les mmes
methodes ou fonctions : soit creation objet FSO ou utilisation de freefile
...
- apres je dois acquerrir une ligne par ligne sous format string, ma question
la est dois-je plutot utiliser la function instr ou la function split ?

Merci de vos aides

Cdlt,
FXD


Pour analyser et manipuler des fichiers CSV (mais aussi XML, LOG en
tout genre, registre Windows, Active Directory, système de fichiers,
etc ...) vous avez un outil performant et puissant : *Log Parser* (de
Gabriele Giuseppini - MS).

"Log Parser 2.2"
http://www.microsoft.com/downloads/details.aspx?FamilyID‰0cd06b-abf8-4c25-91b2-f8d975cf8c07&DisplayLang=en

Il permet d'analyser ces fichiers à l'aide de requêtes SQL et propose
plusieurs types de format de sortie ( texte, XML, CSV, diagrammes sous
forme de .gif ou
.jpg si MS Office est installé, etc ...) .

Cet outil est disponible en ligne de commande (dans une console ou des
fichiers .CMD et .BAT) ou via un activex (ce qui permet par ex. de
l'utiliser dans des languages de scripts comme VBScript ou JScript).

L'accès en ligne de commande se fait via l'utilitaire LogParser.exe
situé dans le répertoire où vous avez installé Log Parser.

Avant d'avoir accès aux objets exposés par l'activex (LogParser.dll)
vous devez l'enregistrer à l'aide de la commande :

regsvr32.exe <chemin Log Parser>LogParser.dll

Vous aurez alors accès (entre autre) aux progid suivants (en VBScript
et concernant les CSV vu votre message) :

Set LogParser = CreateObject("MSUtil.LogQuery")
Set LogParserCSVInput=CreateObject("MSUtil.LogQuery.CSVInputFormat")
Set LogParserCSVOutput=CreateObject("MSUtil.LogQuery.CSVOutputFormat")

Vous trouverez ici un exemple basique d'utilisation de LogParser pour
analyser un CSV (execute une requête SQL et affiche le résultat dans
une datagrid-grille de données):

http://automation.eu.tf/Log_Parser_Analyse_CSV_DEMO.VBS (voir code
ci-dessous)

et son correspondant CMD :

http://automation.eu.tf/Log_Parser_Analyse_CSV_DEMO.CMD (voir code
ci-dessous)

(ces deux fichiers nécessitent le fichier CSV suivant :
http://automation.eu.tf/mon%20fichier.csv - voir données ci-dessous)

Vous trouverez des exemples de scripts dans le sous-répertoire Scripts
du répertoire où vous avez installé Log Parser ainsi que dans le
fichier d'aide de Log Parser : LogParser.chm (... dont la lecture
s'impose :-) ... un tel outil ne se résume pas en quelques lignes).

Compléments d'info sur Log Parser:

"How Log Parser 2.2 Works"
http://www.microsoft.com/technet/community/columns/profwin/pw0505.mspx

"Tales from the Script (Log Parser)"
http://www.microsoft.com/technet/community/columns/scripts/sg0105.mspx

Pour l'analyse de logs à l'aide de FSO regardez cette rubrique du
Script Center:

http://www.microsoft.com/technet/scriptcenter/scripts/logs/default.mspx

dont :

"Read a Comma Separated Values Log"
http://www.microsoft.com/technet/scriptcenter/scripts/logs/text/lgtxvb01.mspx


LES CODES

---8<---Mon Fichier.csv---
utilisateur,login,mdp
marc henri,user1,78898873
pamela,user2,45665236
Maurice,user3,74588565
marise,user4,10233209
---8<---Mon Fichier.csv---

'---8<---Log_Parser_Analyse_CSV_DEMO.VBS---Jean-JMST-Belgium---

'Demo d'analyse d'un fichier CSV à l'aide de Log Parser :
' http://www.microsoft.com/downloads/details.aspx?
' FamilyID‰0cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en

fichier_csv="mon fichier.csv"
progid="MSUtil.LogQuery"

Set LP=CreateObject(progid)
Set Entree_CSV=CreateObject(progid&".CSVInputFormat")
Set Sortie_DataGrid=CreateObject(progid&".DataGridOutputFormat")

'Prend la liste des utilisateurs commencant par la lettre M et
'leur mot de passe (mdp)

Set Resultats=_
LP.Execute(_
"SELECT utilisateur,mdp "&_
"FROM '"&fichier_csv&"' "&_
"WHERE INDEX_OF(TO_UPPERCASE(utilisateur),'M')=0"_
,Entree_CSV _
)

With Resultats
While Not .AtEnd
With .GetRecord
r=r&.GetValue("utilisateur")&" : "&.GetValue("mdp")&VbNewLine
End With
.MoveNext
Wend
.Close
End With

WScript.Echo r

'Sortie Grille de Données (DataGrid)

LP.ExecuteBatch _
"SELECT utilisateur,mdp "&_
"FROM '"&fichier_csv&"' "&_
"WHERE INDEX_OF(TO_UPPERCASE(utilisateur),'M')=0"_
,Entree_CSV _
,Sortie_DataGrid

'---8<---Log_Parser_Analyse_CSV_DEMO.VBS---Jean-JMST-Belgium---

::---8<---Log_Parser_Analyse_CSV_DEMO.CMD---Jean-JMST-Belgium---
::Demo d'analyse d'un fichier CSV à l'aide de Log Parser :
:: http://www.microsoft.com/downloads/details.aspx?
:: FamilyID‰0cd06b-abf8-4c25-91b2-f8d975cf8c07&displaylang=en

@echo off

::Modifiez ces 2 variables en fonction de l'emplacement de vos fichiers

Set fichier_csv=C:Mes Documentsmon fichier.csv
Set LP=C:Log Parser 2.2LogParser.exe

::Prend la liste des utilisateurs commencant par la lettre M et
::leur mot de passe (mdp)

"%LP%" -i:CSV -q:ON "SELECT utilisateur,mdp FROM '%fichier_csv%' WHERE INDEX_OF(TO_UPPERCASE(utilisateur),'M')=0"

echo.
echo.
echo Appuyer sur une touche pour afficher dans une DATAGRID
Pause>nul

::Sortie Grille de Donnees (DataGrid)

"%LP%" -i:CSV -o:DATAGRID "SELECT utilisateur,mdp FROM '%fichier_csv%' WHERE INDEX_OF(TO_UPPERCASE(utilisateur),'M')=0"

Set fichier_csv Set LP ::---8<---Log_Parser_Analyse_CSV_DEMO.CMD---Jean-JMST-Belgium---


Amicalement,


--
Jean - JMST
Belgium