IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Recherche d'un fichier


Sujet :

VBScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut Recherche d'un fichier
    Bonjour à tous,

    Je suis entrain de regarder pour réaliser un script qui va avoir plusieurs tache.

    La première est de rechercher un exécutable (et c'est sur ca que je bloque)

    Le dossier d'installation du logiciel est dans c:\users\Username\AppData\Local\Apps\2.0\, à partir de la, plusieurs autres dossiers peuvent se créer automatiquement.
    Nom : Capture.JPG
Affichages : 157
Taille : 33,6 Ko
    ( A chaque mise à jour du programme) il recréer un autre dossier avec le nouveau fichier exécutable)

    L’exécutable est : "Cgi.Telefi.Client.exe"

    En premier j’essaie avec code ci-dessous d'afficher les informations de l’exécutable, mais rien ne s'affiche.

    Ou est-ce que j'ai commis mon erreur?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where FileName ='Cgi.Telefi.Client.exe' and Drive='c:' and Path = 'Users\\Florent\\AppData\\Local\\Apps\\'")     
    For Each objFile in colFiles
    	Wscript.Echo "Access mask: " & objFile.AccessMask 
        Wscript.Echo "Archive: " & objFile.Archive 
        Wscript.Echo "Compressed: " & objFile.Compressed 
        Wscript.Echo "Compression method: " & objFile.CompressionMethod 
        Wscript.Echo "Creation date: " & objFile.CreationDate 
        Wscript.Echo "Computer system name: " & objFile.CSName 
        Wscript.Echo "Drive: " & objFile.Drive 
        Wscript.Echo "8.3 file name: " & objFile.EightDotThreeFileName 
        Wscript.Echo "Encrypted: " & objFile.Encrypted 
        Wscript.Echo "Encryption method: " & objFile.EncryptionMethod 
        Wscript.Echo "Extension: " & objFile.Extension 
        Wscript.Echo "File name: " & objFile.FileName 
        Wscript.Echo "File size: " & objFile.FileSize 
        Wscript.Echo "File type: " & objFile.FileType 
        Wscript.Echo "File system name: " & objFile.FSName 
        Wscript.Echo "Hidden: " & objFile.Hidden 
        Wscript.Echo "Last accessed: " & objFile.LastAccessed 
        Wscript.Echo "Last modified: " & objFile.LastModified 
        Wscript.Echo "Manufacturer: " & objFile.Manufacturer 
        Wscript.Echo "Name: " & objFile.Name 
        Wscript.Echo "Path: " & objFile.Path 
        Wscript.Echo "Readable: " & objFile.Readable 
        Wscript.Echo "System: " & objFile.System 
        Wscript.Echo "Version: " & objFile.Version 
        Wscript.Echo "Writeable: " & objFile.Writeable 
    Next
    Autres question: Est-il possible dans le cas ou il trouve 2 Cgi.Telefi.Client.exe qu'il me ressort le plus récent (dernière version) uniquement

    merci d'avance pour vos explications

    guigui69

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Puisque le chemin du fichier est connu, on peut tenter une autre façon de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Set objFile = GetObject("winMgmts:CIM_DataFile.Name='C:\Users\\Florent\AppData\Local\Apps\Cgi.Telefi.Client.exe'")
        Wscript.Echo "Access mask: " & objFile.AccessMask
        Wscript.Echo "Archive: " & objFile.Archive
        Wscript.Echo "Compressed: " & objFile.Compressed
        Wscript.Echo "Compression method: " & objFile.CompressionMethod
        Wscript.Echo "Creation date: " & objFile.CreationDate
        Wscript.Echo "Computer system name: " & objFile.CSName
        Wscript.Echo "Drive: " & objFile.Drive
        Wscript.Echo "8.3 file name: " & objFile.EightDotThreeFileName
        Wscript.Echo "Encrypted: " & objFile.Encrypted
        Wscript.Echo "Encryption method: " & objFile.EncryptionMethod
        Wscript.Echo "Extension: " & objFile.Extension
        Wscript.Echo "File name: " & objFile.FileName
        Wscript.Echo "File size: " & objFile.FileSize
        Wscript.Echo "File type: " & objFile.FileType
        Wscript.Echo "File system name: " & objFile.FSName
        Wscript.Echo "Hidden: " & objFile.Hidden
        Wscript.Echo "Last accessed: " & objFile.LastAccessed
        Wscript.Echo "Last modified: " & objFile.LastModified
        Wscript.Echo "Manufacturer: " & objFile.Manufacturer
        Wscript.Echo "Name: " & objFile.Name
        Wscript.Echo "Path: " & objFile.Path
        Wscript.Echo "Readable: " & objFile.Readable
        Wscript.Echo "System: " & objFile.System
        Wscript.Echo "Version: " & objFile.Version
        Wscript.Echo "Writeable: " & objFile.Writeable
    et là, cela marche.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Non le chemin n'est pas connu exactement.

    Je sais uniquement que le chemin (commun) de départ est: c:\users\Username\AppData\Local\Apps\2.0\ à partir de la il y a il y a des sous-dossier qui varie et qui contient l’exécutable.

    Exemple:
    c:\users\Username\AppData\Local\Apps\2.0\486536\aqsdnngvv\Cgi.Telefi.Client.exe
    c:\users\Username\AppData\Local\Apps\2.0\8523697\hgfxdvccd\Cgi.Telefi.Client.exe
    c:\users\Username\AppData\Local\Apps\2.0\4dfs5f88\55555578\Cgi.Telefi.Client.exe


    Et donc mon but est de retrouver l'exe "Cgi.Telefi.Client.exe" présent dans les sous dossier de "c:\users\Username\AppData\Local\Apps\2.0\"

    Est-ce réalisable ?

    guigui69

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Si la recherche du fichier exige des composants incertains du chemin, une marche de sous-répertoires est nécessaire.

    Je peux vous montrer une façon de faire (pas trop manièré comme je l'écris au fur et à mesure spécifiquement pour cet instance). J'écris à l'aide de récursion parce que ça demande moins de lignes de code. En fait, CIM_DataFile est monstrieusement grande, une recherche par récursion pourrait vite épuiser les ressources. En cas ça arrive, vous devrez le réécrire et stocker les trouvés intermédiaires dans des variables pour un fin de les réutilser.

    Code vbscript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    scomputer="."
    set svc=GetObject("winmgmts:\\" & scomputer & "\root\cimv2")
     
    'drive c:, d: etc... (no backslash)
    'basedir start with backslash \test no trailing backslash
    'filebasename xxx without extension
    'fileextension no dot
     
    drive="C:"
    basedir="\users\Username\AppData\Local\Apps\2.0"
    filebasename="Cgi.Telefi.Client"
    fileextension="exe"
     
    searchfile basedir
     
    function searchfile(basedir)
    	dim dirname, path, squery_subdir, squery_file, cdirs, odir, cfiles, ofile
     
    	dirname=drive & replace(basedir,"\", "\\")
    	path=replace(basedir,"\","\\") & "\\"
     
    	squery_file="select * from CIM_DataFile where drive=""" & drive & """ and filename=""" & filebasename & """ and path=""" & path & """"
    	if len(trim(fileextension))<>0 then
    		squery_file=squery_file & " and extension=""" & trim(fileextension) & """"
    	end if
     
    	set cfiles=svc.execquery(squery_file)
    	if cfiles.count<>0 then    'corrigé
    		for each ofile in cfiles
    			wscript.echo "object found : " & ofile.caption
    		next
    	else
    		'wscript.echo "query : " & squery_file & vbcrlf & "return empty"
    	end if
     
    	squery_subdir="ASSOCIATORS of {Win32_Directory.Name=""" & dirname & """} where AssocClass=Win32_Subdirectory ResultRole = PartComponent"
     
    	set cdirs=svc.execquery(squery_subdir)
    	if cdirs.count<>0 then
    		for each odir in cdirs
    			searchfile odir.path & odir.filename
    		next
    	end if
     
    end function
    On peut bien entendu persister les trouvés dans des variables pour s'en servir plus systèmatiquement ailleurs si nécessaire.

    Il se peut que s'en servir de filesystemobject soit plus simple et n'exige moins des ressources. Mais ce que je veux montrer c'est que wmi est tout à fait capable de le faire aussi.

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Il me semble que la ligne 28 devrait être : If cfiles.count <> 0 Then
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Merci l_autodidacte, absolument. Je vais le corriger par éditer. J'hesitais l'une ou l'autre façon à rendre la fonctionalité... finalement pas remis là proprement. Merci encore.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut
    Bonsoir,

    merci pour votre retour.

    J'ai trouvé un code vbs qui ressemble au tient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Dim Shell, DesktopPath, INK
    Set Shell = CreateObject("WScript.Shell")
    DesktopPath = Shell.SpecialFolders("Desktop")
    strFolderName = "C:\Users\Noemie\AppData\Local\Apps"
    Raccourcis= "G:\Download"
    Set colSubfolders = objWMIService.ExecQuery ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " & "Where AssocClass = Win32_Subdirectory " & "ResultRole = PartComponent")
     
    Wscript.Echo strFolderName
     
    arrFolderPath = Split(strFolderName, "\")
    strNewPath = ""
    For i = 1 to Ubound(arrFolderPath)
        strNewPath = strNewPath & "\\" & arrFolderPath(i)
    Next
    strPath = strNewPath & "\\"
     
    Set colFiles = objWMIService.ExecQuery _
        ("Select * from CIM_DataFile where FileName='Cgi.Telefi.Client' and Extension='exe' and Path = '" & strPath & "'")
     
    For Each objFile in colFiles
     
        REM Wscript.Echo "Creation date: " & objFile.CreationDate
        REM Wscript.Echo "Computer system name: " & objFile.CSName
        REM Wscript.Echo "Drive: " & objFile.Drive
        REM Wscript.Echo "8.3 file name: " & objFile.EightDotThreeFileName
     
        REM Wscript.Echo "Extension: " & objFile.Extension
        REM Wscript.Echo "File name: " & objFile.FileName
     
        REM Wscript.Echo "File system name: " & objFile.FSName
     
        REM Wscript.Echo "Last accessed: " & objFile.LastAccessed
        REM Wscript.Echo "Last modified: " & objFile.LastModified
     
        Wscript.Echo "Name: " & objFile.Name
        REM Wscript.Echo "Path: " & objFile.Path
     
        REM Wscript.Echo "Version: " & objFile.Version
       Set Ink = Shell.CreateShortcut(Raccourcis & "\Telefi3.lnk")
    Ink.TargetPath = objFile.Name
    Ink.Save
    Next
     
    For Each objFolder in colSubfolders
        GetSubFolders strFolderName
    Next
     
    Sub GetSubFolders(strFolderName)
        Set colSubfolders2 = objWMIService.ExecQuery ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " & "Where AssocClass = Win32_Subdirectory " & "ResultRole = PartComponent")
        For Each objFolder2 in colSubfolders2
            strFolderName = objFolder2.Name
            REM Wscript.Echo
            REM Wscript.Echo objFolder2.Name
            arrFolderPath = Split(strFolderName, "\")
            strNewPath = ""
            For i = 1 to Ubound(arrFolderPath)
                strNewPath = strNewPath & "\\" & arrFolderPath(i)
            Next
            strPath = strNewPath & "\\"
     
            Set colFiles = objWMIService.ExecQuery _
                ("Select * from CIM_DataFile where FileName='Cgi.Telefi.Client' and Extension='exe' and  Path = '" & strPath & "'")
     
            For Each objFile in colFiles
                  REM Wscript.Echo "Creation date: " & objFile.CreationDate
        REM Wscript.Echo "Computer system name: " & objFile.CSName
        REM Wscript.Echo "Drive: " & objFile.Drive
        REM Wscript.Echo "8.3 file name: " & objFile.EightDotThreeFileName
     
        REM Wscript.Echo "Extension: " & objFile.Extension
        REM Wscript.Echo "File name: " & objFile.FileName
     
        REM Wscript.Echo "File system name: " & objFile.FSName
     
        REM Wscript.Echo "Last accessed: " & objFile.LastAccessed
        REM Wscript.Echo "Last modified: " & objFile.LastModified
     
        Wscript.Echo "Name: " & objFile.Name
        REM Wscript.Echo "Path: " & objFile.Path
     
        REM Wscript.Echo "Version: " & objFile.Version
       Set Ink = Shell.CreateShortcut(Raccourcis & "\Telefi3.lnk")
    Ink.TargetPath = objFile.Name
    Ink.Save
            Next
     
            GetSubFolders strFolderName
        Next
    End Sub

    Par rapport à ton retour il faut que je reste avec ce type de code. ou bien je doit changer de code ??


    Par contre le programme vient de recevoir une mise à jour dans le dossier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C:\Users\Florent\AppData\Local\Apps\2.0\EH0ZGZ9G.KBZ\LB4HV8XT.6Y1\
    Nom : Capture1.JPG
Affichages : 128
Taille : 140,9 Ko

    Le début du dossier qui contient "exe" en question commence par :cgi...tion
    (C:\Users\Florent\AppData\Local\Apps\2.0\EH0ZGZ9G.KBZ\LB4HV8XT.6Y1\cgi...tion_448cebb98ed65f12_0002.0002_d6133c9c30c10ec7\)

    Et donc maintenant j'ai deux dossier qui commence par cgi...tion comment je peux faire dans ma recherche pour prend uniquement le dernier dossier par date ? Et si possible accelerer la recherche dans le dossier en question

    Merci d'avance pour votre aide

    guigui69

  8. #8
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Par rapport à ton retour il faut que je reste avec ce type de code. ou bien je doit changer de code ??
    Je n'ai pas compris du tout de quoi vous voullez dire : ce sont deux scripts qui pourraient faire des choses similaires - je ne sais pas... Vous pouvez faire un synthèse d'eux si l'un ou l'autre ne vous satisfait pas entièrement ou ne faissant exactement ce que vous cherchez à obtenir.

    Par jeter un coup d'oeil sur le script vous dites trouvé, je vois déjà une faute logique, mais ça peut corriger facilement. Le script va checher seulement tous les deux niveaux de sours-répertoires.
    fichier recherché : niveau 0 de base - niveau 2 - niveau 3 - etc...
    Le niveau 1 est manqué. Le sub semble valablement fait pour être équitable.

    En tout cas, si vous vous devenez un scripteur agile, il est bon d'étudier les scripts, l'un ou l'autre comme vous voulez. Mais, comme j'ai dit, les ressources de besoin sont très importantes et peuvent très vite épuissées et ils ne sont pas le plus rapide à completer.

    Pour être plus simple et plus pratique, c'est simplement de faire appeler un bat simple et puis lire le fichier qui persiste les trouvés.
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    c:
    cd \Users\Florent\AppData\Local\Apps\2.0
    dir /s/b/a:-d Cgi.Telefi.Client.exe > result.txt
    Et puis vous lisez result.txt ligne par ligne pour retrouve les résultats par scripting.filesystemobject.

    Pour une solution plus rapide mais restant toujours dans une technologie homegène, vous pouvez utilser tout le temps scripting.filesystemobject au lieu de via un étape intermédiaire de bat. Je pense vous pouvez trouver des exemples aussi facilement sur le web.

    Voilà !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut
    Bonsoir,

    Pardon si j'ai pas été clair.

    Je voulais savoir si vous me conseillez de rester sur ce type de code VBS avec les WMI ou bien utiliser le vbs du type filesystemobject.

    Je vais regarder votre conseil par rapport à votre fichier BAT

    merci

    guigui69

  10. #10
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Je peux dire utiliser fso est bien plus pratique et efficace; pourtant, l'approche de wmi n'est pas sans intérêt, loin de là, évidemment. C'est seulement que CIM_DATAFILE contient tellement nombreuses d'informations et de méthodes qui le rendent moins efficace pour ce genre d'excercises. Comme vous semblez désirer l'aide avec un script complet fonctionel pour vous faire progresser, je veux bien de vous faire part un. J'espère vous faire votre part de bien étudier tout ceux qui entourent pour qu'il fonctionne et ce qu'il faut faire modifier pour s'adapter à votre besoin particulier.
    Code vbscript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    set fso=createobject("scripting.filesystemobject")
     
    'dirpath should now include driver spec and without trailing backslash
    dirpath="C:\Users\Florent\AppData\Local\Apps\2.0"
     
    'filename should include the basename and extension
    filename="Cgi.Telefi.Client.exe"
     
    searchfile_fso dirpath
     
    function searchfile_fso(dirpath)
     
    	'use global variable fso and filename (as file to search)
    	dim cdirs, odir, cfiles, ofile
     
    	if not fso.folderexists(dirpath) then
    		wscript.echo "The base directory " & dirpath & " does not exist."
    		exit function
    	end if
     
    	if fso.fileexists(dirpath & "\" & filename) then
    		wscript.echo "Object found : " & dirpath & "\" & filename
    	end if
     
    	set cdirs=fso.getfolder(dirpath).subfolders
    	for each odir in cdirs
    		searchfile_fso odir.path
    	next
     
    end function

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 816
    Points : 49
    Points
    49
    Par défaut
    Merci pour ta proposition de script ca a l'air au top.

    J'ai juste une question

    Lorsqu'il fait la boucle sur chaque dossier et fichier l'ordre c'est pas date de création ?


    merci d'avance

    guigui69

  12. #12
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Lorsqu'il fait la boucle sur chaque dossier et fichier l'ordre c'est pas date de création ?
    En principle on ne doit pas faire construire le script basé sur quelque assumption de l'ordre de retour sur une liste ou collection (for x in y). Mais si il n'y pas d'autre facteur intervenant, on peut supposer par observation l'ordre de retour est basée sur l'ascii ordre du texte de nom de répertoires avec les cas minucules toutfois transformés aux cas majescules tout d'abord. Date de création ? certainement pas. Mais comme dit, on ne doit pas faire construire le script dépendant sur cette observation.

    Si on veut traverser les sous-répertoires d'une certaine façon particulière, on doit faire sortir et stocker les données caractéristiques qu'on en intéresse dans quelque structure comme db ou aux cas simples, dans une variable du type dictionnaire (eg clé : nom, valeur : date de création) et puis on l'applique quelque routine de tri pour arriver à une liste d'un ordre bien déterminé qu'on traverse en la référant. Voilà.

Discussions similaires

  1. Améliorer la recherche dans un fichier?
    Par abdmaa dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 09/05/2005, 13h09
  2. [LG]Runtime Error lors d'une recherche dans un fichier
    Par Fraynor dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2005, 22h51
  3. Rechercher dans un fichier avec emacs
    Par ggnore dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 24/11/2004, 10h28
  4. recherche dans un fichier xml (castor)
    Par pingoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 06/09/2004, 14h28
  5. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo