Si fichier plus petit qu'un autre => kill

cobaltone Messages postés 116 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 25 avril 2012 - 17 juin 2004 à 00:31
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 - 17 juin 2004 à 14:00
salut a tous,
je me casse les dents sur une fonction mais peut etre aurez vous la soluce ?!

voici ma source

Function CmpFlx()
chemin1 = "c:\stats"
chemin2 = "c:\supervision"
Set fs = CreateObject("Scripting.FileSystemObject")
Set répertoire1 = fs.GetFolder(chemin1)
Set répertoire2 = fs.GetFolder(chemin2)
Set lesFichiers1 = répertoire1.Files
Set lesFichiers2 = répertoire2.Files

For Each unFichier In lesFichiers1
a = CStr(Date)
a1 = Left(a, 2) 'jour
a2 = Mid(a, 4, 2) 'mois
'si le fichier est d'aujourdhui et ressemble a ".flx"
If Mid(unFichier, 10, 4) = a2 + a1 And unFichier Like "flx" Then
'si un fichier est plus petit qu'un autre suprimer le plus petit

End If



Next unFichier
End Function

le 1er probleme est de syntaxe, quande je dit
If Mid(unFichier, 10, 4) = a2 + a1 And unFichier Like "flx"
cette syntaxe ne fonctionne pas ! et je ne sait pas pourquoi
alors if unFichier Like "flx" et if mid... fonctionnent séparement!

mon 2eme probleme :
pas moyen de trouver comment dire
"si un fichier est plus petit qu'un autre suprimer le plus petit"

me voila dans une impasse et apres de nombreuse recherche infructueuse tant dans msdn que dans des essais
nombreux de syntaxe difference rien n'y fait !

merci d'avance tout ceux qui pourrait m'aider !

CoBaLtOnE

4 réponses

huelce Messages postés 45 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 juillet 2004 1
17 juin 2004 à 02:12
Voilà la plus simple des solutions, mais peut-être pas vraiment ce que tu veux :

pour choper la taille en octets de tes fichiers :

dim TailleFic1 as long
TailleFic1=FileLen("C:\rep\fic1.ext")

Tu fais ca pour tes 2 fichiers, tu compares ensuite TailleFic1 et TailleFic 2, et tu kill le plus petit :

if taillefic1 < taillefic2 then
kill "C:\rep\fic1.ext"
else
kill "C:\rep\fic2.ext"
end if
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
17 juin 2004 à 10:32
Pour ton pb1 je pense que tu devrais parenthéser les 2 expressions

If (Mid(unFichier, 10, 4) = (a2 + a1)) And (unFichier Like "flx") Then
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
17 juin 2004 à 13:59
Je réponds ici car j'avais besoin de tout revoir ...

Ton code devraiit ressembler à ceci.

Function CmpFlx()
Dim lTailleMini As Long ' Taille du plus petit fichier
Dim sFichierMini As String ' Nom du plus petit fichier
Dim lNbFichierTest As Long ' Nombre de fichiers testés

    chemin1 = "c:\stats"
    chemin2 = "c:\supervision"
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set répertoire1 = fs.GetFolder(chemin1)
    Set répertoire2 = fs.GetFolder(chemin2)
    Set lesFichiers1 = répertoire1.Files
    Set lesFichiers2 = répertoire2.Files
    
    ' on intialise la longueur à -1 pour savoir quand on passera sur le premier fichier
    lTailleMini = -1
    ' Nombre de fichiers testés = 0
    lNbFichierTest = 0

    ' Parcours des fichiers du répertoire
    For Each unFichier In lesFichiers1
        
        a = CStr(Date)
        a1 = Left(a, 2) 'jour
        a2 = Mid(a, 4, 2) 'mois
        'si le fichier est d'aujourdhui et ressemble a ".flx"
        If Mid(unFichier, 10, 4) = CStr(a2 & a1) And unFichier Like "flx" Then
            
            ' On teste un nouveau fichier
            lNbFichierTest = lNbFichierTest + 1
            ' on récupère le nom complet du fichier et sa taille
            If lTailleMini = -1 Then
                
                ' on est sur le premier, on le charge directement
                sFichierMini = unFichier.Drive & unFichier.Path & unFichier.Name
                lTailleMini = Len(sFichierMini)
            Else
                
                ' on a déjà un fichier chargé, on teste
                If lTailleMini > Len(unFichier.Drive & unFichier.Path & unFichier.Name) Then
                    ' fichier plus petit
                    sFichierMini = unFichier.Drive & unFichier.Path & unFichier.Name
                    lTailleMini = Len(sFichierMini)
                End If
            
            End If
        
        End If
    
    Next unFichier
    
    ' on doit avoir le fichier le plus petit ici, on ne le supprime qu'à partir du moment où on a trouvé 2 fichiers au moins.
    Kill sFichierMini

End Function

0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
17 juin 2004 à 14:00
J'ai oublié le test sur l'instruction Kill, il fallait lire

if lNbFichierTest > 1 then
Kill sFichierMini
End If
0
Rejoignez-nous