sakalala
Messages postés19Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention25 janvier 2008
-
28 déc. 2007 à 22:07
sakalala
Messages postés19Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention25 janvier 2008
-
3 janv. 2008 à 09:35
Bonjour,
je veux parcourir les fichiers contenus dans un repertoire. Mon problème est que mon script parcourt les fichiers dans l'ordre alphabetique. Comment faire pour definir un ordre c'est à dire je veux parcourir en premier toto.log puis bernard.log ....
Dim f1,cpt,oFSO
Set oFSO = CreateObject("Scripting.FileSystemObject")
If oFSO.FolderExists(pathLogs) Then
For each f1 in oFSO.GetFolder(pathLogs).Files
ListeDesLogs(cpt)=oFl.Name
cpt=cpt+1
Next
End If
Ex des fichiers :
alain.log
bernard.log
toto.log
titi.log
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 2 janv. 2008 à 20:07
Bonsoir à tous,
Bonsoir Sakalala,
En reprenant ton script (bonjour la convention de notation hongroise),
la liste des fichiers sera triée par date (xxxx20071231.*.log)
Set oFSOAnalyse = CreateObject("Scripting.FileSystemObject")
If oFSOAnalyse.FolderExists(pathLogs) Then
For each oFl in oFSOAnalyse.GetFolder(pathLogs).Files
If IsNumeric(right(left(oFl.Name,instr(oFl.Name,".")-1),8)) and _
LCase(oFSOAnalyse.GetExtensionName(oFl.Name)) = "log" Then
Set objFileItem = oFSOAnalyse.GetFile(oFl.Path)
imax = imax + 1
ReDim Preserve Tableau(2, imax)
Tableau(1, imax) = oFl.Name
Tableau(2, imax) = right(left(oFl.Name,instr(oFl.Name,".")-1),8)
End if
Next
End If
Set oFSOAnalyse = Nothing
Set objFileItem = Nothing
Do
Valeur = 0
For i = 1 To imax - 1
If Tableau(2, i) < Tableau(2, i + 1) Then
For z = 1 To 2
Cible = Tableau(z, i)
Tableau(z, i) = Tableau(z, i + 1)
Tableau(z, i + 1) = Cible
Next
Valeur = 1
End If
Next
Loop While Valeur = 1
For i = 1 To imax
liste = liste & vbCrLf & i &vbtab& Tableau(1, i)
Next
msgbox liste
Par contre, dans ta demande tu 29/12, tu dis:
<< le
principe de mon script est d'aller chercher les fichiers selon l'heure
que tu saisis >>
Y aurait-il 2 conditions de selection ?
xxxx20071231.*.log et DateLastModified (jj/mm/aaaa hh:mn)
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 28 déc. 2007 à 23:18
Si tu défini un ordre tel que celui que tu proposes (qui me semble totalement arbitraire !), cela veux dire que tu connais déjà la liste des fichiers du répertoire ... alors pourquoi veux-tu parcourir ce répertoire par code ?
Y a un truc qui m'échappe !!
sakalala
Messages postés19Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention25 janvier 2008 29 déc. 2007 à 08:47
ce bout de code est un extract d'un code plus volumineux.
le principe de mon script est d'aller chercher les fichiers selon l'heure que tu saisis, les mettre dans un repertoire pour rechercher dans ces fichiers certains mot clé. c'est pour célà l'ordre est primordial car le resultat qu'on trouve dans le premier fichier peut-être utilisé comme paramètre lors du parcours du deuxième fichier. Je connais la liste des fichiers mais je ne vois pas comment le parcourir autrement que par code. su tu as des propositions, je suis preneur.
sakalala
Messages postés19Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention25 janvier 2008 31 déc. 2007 à 14:20
bonjour Jean marc,
j'ai l'impression que tu es le seul dans ce site à maitriser VBS
Ce que je voulais dire par connaitre les noms des fichiers, je connais le début du nom des fichiers car la fin change par exemple toto20071231.aze34568.log. je ne connais que toto20071231 la partie en gras change. j'avais pensé au tableau mais je ne voyais pas comment prendre en compte que le début du nom de fichier comme dans Unix toto* il parcours tous les fichiers qui commence par toto (j'ai plusieurs fichiers commençant par les mêmes caractères : toto, toto1, toto2,toto3, titi, titi1,titi2, etc ...)
merci d'avance
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 31 déc. 2007 à 21:42
Bonsoir Sakalala,
Que l'approche ci-dessous puisse t'aider !
Dim objFso, objFile, strFile
Set objFso = CreateObject("Scripting.FileSystemObject")
For Each objFile In objFso.GetFolder("c:\test").Files
If IsNumeric(right(left(objFile.Name,instr(objFile.Name,".")-1),8)) _
And LCase(objFso.GetExtensionName(objFile.Path)) = "log" Then
MsgBox objFile.Name &vbCr& strFile &vbCr&_
left(strFile, len(strFile)-8) &vbCr&_
right(left(objFile.Name,instr(objFile.Name,".")-1),8),,"verif"
End if
Next
sakalala
Messages postés19Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention25 janvier 2008 1 janv. 2008 à 11:41
bonjour,
merci pour cet essai, mais mon problème est beaucoup plus simple. Voici le code qui parcours et analyse les fichiers dans l'ordre alphabetique, peux-tu le modifier pour qu'il parcours selon l'ordre qu'on souhaite lui donner en tenant compte des exemples de fichiers ci-haut ou tu peux fabriquer tes propores fichiers pour tester:
1. Dim path , indiceTableau
2. path = WScript.ScriptFullName
3. Dim arg
4. arg = Split(path, "")
5. path=""
6. For tmp= 0 To (UBound(arg)-1)
7. path=path+arg(tmp)+""
8. Next
'Tableau listant les noms des logs à parcourir
9. Dim ListeDesLogs(30)
10. pathLogs = path+"log"
11. wscript.echo "Path des logs importés : "+pathLogs
12. Dim oFl,cptDossier,oFSOAnalyse,i , f
13. Set oFSOAnalyse = CreateObject("Scripting.FileSystemObject")
14. If oFSOAnalyse.FolderExists(pathLogs) Then
15. For each oFl in oFSOAnalyse.GetFolder(pathLogs).Files
16. ListeDesLogs(cptDossier)=oFl.Name
17. wscript.echo "fic : "+oFl.Name
18. cptDossier=cptDossier+1
19. Next
20. End If
21. For each indiceTableau in ListeDesLogs
22. if(indiceTableau<>"") then
23. log = pathLogs &""& indiceTableau
24. Wscript.echo "Fichier analysé : "+log
25. end if
26. next