[RESOLU] VBS : demande d'aide suppression de fichier selon leur date

VBS : demande d'aide suppression de fichier selon leur date [RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 14-04-2006 à 21:35:21    


 
 
bonsoir a tous j'espere que vous pourrez m'aider.
 
Donc en fait je veu supprimer des fichiers s'il sont plus vieux que 120 jours.
 
voici l'errer que j'obtiens :  
')' attentu à la ligne if (Deltafcb-mid(Filesfcb.DateCreated,7,4),mid(Filesfcb.DateCreated,4,2),mid(Filesfcb.DateCreated,1,2))>0)  
Code : 800A03E
 
voici mon code :
Set Shell = CreateObject("WScript.Shell" )
Set SysEnv = Shell.Environment("SYSTEM" )
Dim FsoProd
Set FsoProd = CreateObject("Scripting.FileSystemObject" )
 
Function CalculDelDate(Delta)
    'Wscript.echo Delta
    'Wscript.echo ajoutZero(Day(Date))
    if (Day(Date) < Delta ) then
        if (ajoutZero(Month(Date))=01) Then
            MonthSup=12
        else
            MonthSup = ajoutZero(Month(Date))-1
        End If
        DaySup = 31 + (ajoutZero(Day(Date))-(Delta))
        'Wscript.echo DaySup
        CalculDelDate = Year(Date) & ajoutZero(MonthSup) & DaySup
    else
        CalculDelDate =((Year(Date) & ajoutZero(Month(Date)) & ajoutZero(Day(Date)))-Delta)
         
    End If
End Function
Deltafcb=CalculDelDate(120)
Set Fsofcb = FsoProd.GetFolder(SysEnv("prod" ) & "\flash\" )
Set LFilesfcb = Fsofcb.Files
for each Filesfcb in LFilesfcb
    wscript.echo Filesfcb.DateCreated
    'Wscript.echo mid(Filesfcb.DateCreated,6,4),mid(Filesfcb.DateCreated,3,2),mid(Filesfcb.DateCreated,1,2)
    'set DateSce=mid(Filesfcb.DateCreated,6,4),mid(Filesfcb.DateCreated,3,2),mid(Filesfcb.DateCreated,1,2)
    'wscript.echo DateSce
    'wscript.echo mid(Filesfcb.DateCreated,7,4),mid(Filesfcb.DateCreated,4,2),mid(Filesfcb.DateCreated,1,2)
     
    if (Deltafcb-mid(Filesfcb.DateCreated,7,4),mid(Filesfcb.DateCreated,4,2),mid(Filesfcb.DateCreated,1,2))>0)         then
        wscript.echo Filesfcb.Name
    End if
next
 
Est ce que quelqu'un a fait du code similaire une fois. SVP j'ai besoin d'aide.


Message édité par overider le 15-04-2006 à 03:44:44
Reply

Marsh Posté le 14-04-2006 à 21:35:21   

Reply

Marsh Posté le 14-04-2006 à 23:54:03    

Effectivement, la ligne en question ne respecte pas la syntaxe car elle se résume à

if (Deltafcb - mid(...), mid(...), mid(...)) > 0)

Les virgules entre les mid() sont les malvenues.
 
Mais peut-être qu'avec la petite amélioration suivante, cela pourrait marcher :

if (CInt(Deltafcb) - CInt(mid(Filesfcb.DateCreated,7,4) & mid(Filesfcb.DateCreated,4,2) & mid(Filesfcb.DateCreated,1,2))) > 0) then

L'instruction CInt() fait une conversion d'une chaîne de caractères vers un nombre entier, ce qui est nécessaire car la soustraction porte sur des nombres, pas sur des chaînes.


Message édité par olivthill le 14-04-2006 à 23:55:06
Reply

Marsh Posté le 15-04-2006 à 00:29:26    

J'ai repris le problème à zéro et voici une solution plus courte et qui marche :

Code :
  1. ' Affiche tous les fichiers d'un répertoire
  2. ' dont la date est antérieure à 120 jours
  3. Set fso = CreateObject("Scripting.FileSystemObject" )
  4. Set f = fso.GetFolder("C:\un_dossier" )
  5. Set fc = f.Files
  6. date_moins_jours = Date() - 120
  7. For Each f1 in fc
  8.    If (f1.DateCreated < date_moins_jours) Then
  9.       Wscript.Echo f1.name
  10.    End If
  11. Next

Reply

Marsh Posté le 15-04-2006 à 03:13:04    

Merci je savais pas que Cint marchait sous VBS.
 je trouve que c'est mal documenté. a par le site de Krosoft$ et secret windows .....
 
si quelquelqu'un a des infos sur VBS + MYSQL je suis preneur
 
MERCI ENCORE A TOUT LES DEUX

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed