Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant
j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie au
beau milieu d'un Script.
Je suis preneur de quelques lignes de code VBS.
D'avance Merci
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean
Bonjour,
Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie au beau milieu d'un Script. Je suis preneur de quelques lignes de code VBS. D'avance Merci
Vous mettez vos lignes dans une variable tableau (à l'aide de FSO) puis pour trier vous avez :
-la traduction de l'algo Quick Sort (faites une recherche sur le site de Clarence Washington http://cwashington.netreach.net ou sur ce groupe dans le moteur de recherche news de Google)
-la possibilité d'utiliser ADO (faites une recherche sur le site de Clarence Washington ou sur le site MS Script Center ou sur ce groupe dans le moteur de recherche news de Google)
-passer à JScript et utiliser sa méthode sort : http://msdn.microsoft.com/library/en-us/script56/html/js56jsmthsort.asp
Amicalement,
-- Jean - JMST Belgium
Bonjour,
Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant
j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie au
beau milieu d'un Script.
Je suis preneur de quelques lignes de code VBS.
D'avance Merci
Vous mettez vos lignes dans une variable tableau (à l'aide de FSO) puis
pour trier vous avez :
-la traduction de l'algo Quick Sort (faites une recherche sur le site
de Clarence Washington http://cwashington.netreach.net ou sur ce groupe
dans le moteur de recherche news de Google)
-la possibilité d'utiliser ADO (faites une recherche sur le site de
Clarence Washington ou sur le site MS Script Center ou sur ce groupe
dans le moteur de recherche news de Google)
-passer à JScript et utiliser sa méthode sort :
http://msdn.microsoft.com/library/en-us/script56/html/js56jsmthsort.asp
Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie au beau milieu d'un Script. Je suis preneur de quelques lignes de code VBS. D'avance Merci
Vous mettez vos lignes dans une variable tableau (à l'aide de FSO) puis pour trier vous avez :
-la traduction de l'algo Quick Sort (faites une recherche sur le site de Clarence Washington http://cwashington.netreach.net ou sur ce groupe dans le moteur de recherche news de Google)
-la possibilité d'utiliser ADO (faites une recherche sur le site de Clarence Washington ou sur le site MS Script Center ou sur ce groupe dans le moteur de recherche news de Google)
-passer à JScript et utiliser sa méthode sort : http://msdn.microsoft.com/library/en-us/script56/html/js56jsmthsort.asp
Amicalement,
-- Jean - JMST Belgium
Stéphane [MS]
Bonjour,
à adapter : =================== 'Tri du tableau arrProcesses For I = LBound(arrProcesses) to UBound(arrProcesses) For J = I+1 to UBound(arrProcesses) ' tri décroissant If arrProcesses(i) < arrProcesses(j) Then intTampon = arrProcesses(i) arrProcesses(i) = arrProcesses(j) arrProcesses(j)=intTampon End If Next Next ===================== Cdlt Stéphane
"---DGI972---" <gilles.dermigny@*No Spam*laposte.net> a écrit dans le message de news:
Bonjour,
Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie au beau milieu d'un Script. Je suis preneur de quelques lignes de code VBS. D'avance Merci
Bonjour,
à adapter :
=================== 'Tri du tableau arrProcesses
For I = LBound(arrProcesses) to UBound(arrProcesses)
For J = I+1 to UBound(arrProcesses)
' tri décroissant
If arrProcesses(i) < arrProcesses(j) Then
intTampon = arrProcesses(i)
arrProcesses(i) = arrProcesses(j)
arrProcesses(j)=intTampon
End If
Next
Next
=====================
Cdlt
Stéphane
"---DGI972---" <gilles.dermigny@*No Spam*laposte.net> a écrit dans le
message de news: eKMB5WSXFHA.2996@TK2MSFTNGP10.phx.gbl...
Bonjour,
Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant
j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie
au
beau milieu d'un Script.
Je suis preneur de quelques lignes de code VBS.
D'avance Merci
à adapter : =================== 'Tri du tableau arrProcesses For I = LBound(arrProcesses) to UBound(arrProcesses) For J = I+1 to UBound(arrProcesses) ' tri décroissant If arrProcesses(i) < arrProcesses(j) Then intTampon = arrProcesses(i) arrProcesses(i) = arrProcesses(j) arrProcesses(j)=intTampon End If Next Next ===================== Cdlt Stéphane
"---DGI972---" <gilles.dermigny@*No Spam*laposte.net> a écrit dans le message de news:
Bonjour,
Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie au beau milieu d'un Script. Je suis preneur de quelques lignes de code VBS. D'avance Merci
jbongran
---DGI972--- wrote:
Bonjour,
Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie au beau milieu d'un Script. Je suis preneur de quelques lignes de code VBS. D'avance Merci
Juste parce que ça me fait plaisir ;-)
Function MakeRecordset(strFile) Dim startTime Dim rstFiles Const ForReading = 1 Const ForWriting = 2 Const adVarChar = 200 Const adInteger = 3 Const adDate = 7 startTime = Now() WScript.Echo "Création d'un recordset" Set rstFiles = CreateObject("ADODB.Recordset") rstFiles.Fields.Append "idx", adInteger rstFiles.Fields.Append "line", adVarChar, 2048 rstFiles.Open Dim fso, MyFile, i, j, retstring i = 0 j = 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(strFile) Then WScript.Echo "Ouverture du fichier " & strFile Set MyFile = fso.OpenTextFile(strFile, ForReading, False) Do While MyFile.AtEndOfStream <> True retstring = Trim(MyFile.ReadLine) If Len(retstring) > 0 Then i = i +1 rstFiles.AddNew rstFiles.Fields("idx").Value = i rstFiles.Fields("line").Value = retstring If (i Mod 1000) = 0 Then WScript.Echo i & " enregistrements créés à présent" End If End If Loop MyFile.Close WScript.Echo "Fin de lecture du fichier " & strFile WScript.Echo "Tri des enregistrements" rstFiles.Sort = "line ASC" rstFiles.MoveFirst Set MyFile = fso.OpenTextFile(strFile & ".bak", ForWriting, True) Do While Not rstFiles.EOF MyFile.WriteLine rstFiles.Fields("line").Value j = j +1 If (j Mod 1000) = 0 Then WScript.Echo j & " lignes écrites à présent" End If rstFiles.MoveNext Loop rstFiles.Close Set rstFiles = Nothing MyFile.Close Set MyFile = Nothing If i = j Then fso.CopyFile strFile & ".bak", strFile, True fso.DeleteFile strFile & ".bak" WScript.Echo VbCrLf & String(20, "-") WScript.Echo "Fichier " & strFile & " enregistré" WScript.Echo "Nombres de lignes triées: " & j WScript.Echo "Temps du travail: " & DateDiff("s", startTime, Now()) & "seconde(s)" WScript.Echo String(20, "-") & VbCrLf Else WScript.Echo "Le nombre de lignes non vides dans le fichier source" WScript.Echo "n'est pas égal au nombre d'enregistrements créés." WScript.Echo "Le fichier source n'a pas été modifié." End If Else WScript.Echo "Le fichier " & strFile & " est introuvable" End If WScript.Echo "Fin du travail" WScript.Echo String(20, "-") & VbCrLf End Function
Call MakeRecordset("c:testmon.Log")
---DGI972--- wrote:
Bonjour,
Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour
l'instant j'utilise SORT en ligne de commande mais je ne trouve pas
cela très jolie au beau milieu d'un Script.
Je suis preneur de quelques lignes de code VBS.
D'avance Merci
Juste parce que ça me fait plaisir ;-)
Function MakeRecordset(strFile)
Dim startTime
Dim rstFiles
Const ForReading = 1
Const ForWriting = 2
Const adVarChar = 200
Const adInteger = 3
Const adDate = 7
startTime = Now()
WScript.Echo "Création d'un recordset"
Set rstFiles = CreateObject("ADODB.Recordset")
rstFiles.Fields.Append "idx", adInteger
rstFiles.Fields.Append "line", adVarChar, 2048
rstFiles.Open
Dim fso, MyFile, i, j, retstring
i = 0
j = 0
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(strFile) Then
WScript.Echo "Ouverture du fichier " & strFile
Set MyFile = fso.OpenTextFile(strFile, ForReading, False)
Do While MyFile.AtEndOfStream <> True
retstring = Trim(MyFile.ReadLine)
If Len(retstring) > 0 Then
i = i +1
rstFiles.AddNew
rstFiles.Fields("idx").Value = i
rstFiles.Fields("line").Value = retstring
If (i Mod 1000) = 0 Then
WScript.Echo i & " enregistrements créés à présent"
End If
End If
Loop
MyFile.Close
WScript.Echo "Fin de lecture du fichier " & strFile
WScript.Echo "Tri des enregistrements"
rstFiles.Sort = "line ASC"
rstFiles.MoveFirst
Set MyFile = fso.OpenTextFile(strFile & ".bak", ForWriting, True)
Do While Not rstFiles.EOF
MyFile.WriteLine rstFiles.Fields("line").Value
j = j +1
If (j Mod 1000) = 0 Then
WScript.Echo j & " lignes écrites à présent"
End If
rstFiles.MoveNext
Loop
rstFiles.Close
Set rstFiles = Nothing
MyFile.Close
Set MyFile = Nothing
If i = j Then
fso.CopyFile strFile & ".bak", strFile, True
fso.DeleteFile strFile & ".bak"
WScript.Echo VbCrLf & String(20, "-")
WScript.Echo "Fichier " & strFile & " enregistré"
WScript.Echo "Nombres de lignes triées: " & j
WScript.Echo "Temps du travail: " & DateDiff("s", startTime, Now()) &
"seconde(s)"
WScript.Echo String(20, "-") & VbCrLf
Else
WScript.Echo "Le nombre de lignes non vides dans le fichier source"
WScript.Echo "n'est pas égal au nombre d'enregistrements créés."
WScript.Echo "Le fichier source n'a pas été modifié."
End If
Else
WScript.Echo "Le fichier " & strFile & " est introuvable"
End If
WScript.Echo "Fin du travail"
WScript.Echo String(20, "-") & VbCrLf
End Function
Je cherche à trier un fichier TXT (30 000 lignes) en VBS.Pour l'instant j'utilise SORT en ligne de commande mais je ne trouve pas cela très jolie au beau milieu d'un Script. Je suis preneur de quelques lignes de code VBS. D'avance Merci
Juste parce que ça me fait plaisir ;-)
Function MakeRecordset(strFile) Dim startTime Dim rstFiles Const ForReading = 1 Const ForWriting = 2 Const adVarChar = 200 Const adInteger = 3 Const adDate = 7 startTime = Now() WScript.Echo "Création d'un recordset" Set rstFiles = CreateObject("ADODB.Recordset") rstFiles.Fields.Append "idx", adInteger rstFiles.Fields.Append "line", adVarChar, 2048 rstFiles.Open Dim fso, MyFile, i, j, retstring i = 0 j = 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(strFile) Then WScript.Echo "Ouverture du fichier " & strFile Set MyFile = fso.OpenTextFile(strFile, ForReading, False) Do While MyFile.AtEndOfStream <> True retstring = Trim(MyFile.ReadLine) If Len(retstring) > 0 Then i = i +1 rstFiles.AddNew rstFiles.Fields("idx").Value = i rstFiles.Fields("line").Value = retstring If (i Mod 1000) = 0 Then WScript.Echo i & " enregistrements créés à présent" End If End If Loop MyFile.Close WScript.Echo "Fin de lecture du fichier " & strFile WScript.Echo "Tri des enregistrements" rstFiles.Sort = "line ASC" rstFiles.MoveFirst Set MyFile = fso.OpenTextFile(strFile & ".bak", ForWriting, True) Do While Not rstFiles.EOF MyFile.WriteLine rstFiles.Fields("line").Value j = j +1 If (j Mod 1000) = 0 Then WScript.Echo j & " lignes écrites à présent" End If rstFiles.MoveNext Loop rstFiles.Close Set rstFiles = Nothing MyFile.Close Set MyFile = Nothing If i = j Then fso.CopyFile strFile & ".bak", strFile, True fso.DeleteFile strFile & ".bak" WScript.Echo VbCrLf & String(20, "-") WScript.Echo "Fichier " & strFile & " enregistré" WScript.Echo "Nombres de lignes triées: " & j WScript.Echo "Temps du travail: " & DateDiff("s", startTime, Now()) & "seconde(s)" WScript.Echo String(20, "-") & VbCrLf Else WScript.Echo "Le nombre de lignes non vides dans le fichier source" WScript.Echo "n'est pas égal au nombre d'enregistrements créés." WScript.Echo "Le fichier source n'a pas été modifié." End If Else WScript.Echo "Le fichier " & strFile & " est introuvable" End If WScript.Echo "Fin du travail" WScript.Echo String(20, "-") & VbCrLf End Function