2010-06-09 5 views
2

J'essaie de copier des fichiers à partir d'un répertoire où la date de la dernière modification est dans les 24 heures de la date actuelle. J'utilise un caractère générique dans le chemin de fichier car il change tous les jours que j'utilise;VBScript - copie des fichiers modifiés au cours des dernières 24 heures

option explicit 

dim fileSystem, folder, file 
dim path 

path = "d:\x\logs" 

Set fileSystem = CreateObject("Scripting.FileSystemObject") 
Set folder = fileSystem.GetFolder(path) 

for each file in folder.Files  


      If DateDiff("d", file.DateLastModified, Now) < 1 Then 


    filesystem.CopyFile "d:\x\logs\apache_access_log-*", "d:\completed logs\" 

     WScript.Echo file.Name & " last modified at " & file.DateLastModified 
    end if 
next 

Malheureusement, cela semble être la copie de tous les fichiers, et pas seulement ceux récemment modifiés. Est-ce que quelqu'un peut-il me montrer la bonne direction?

merci beaucoup

Martin.

Répondre

3

Que diriez-vous:

filesystem.CopyFile "d:\x\logs\" & file.name, "d:\completed logs\" 
+0

brillant, merci beaucoup pour votre aide. Je peux voir où je me trompais maintenant. –

0

Il semble que vous copiez tous fichiers si un fichier satisfait la comparaison DateDiff.

1

ligne de changement à:

filesystem.CopyFile file, "d:\completed logs\" 

Vous copiaient tous les fichiers dans le répertoire dès qu'un fichier correspond à vos critères

+0

Le code ci-dessus provoquera probablement une erreur car la variable de fichier est un objet fichier et non la chaîne représentant le chemin du fichier, ce que recherche la méthode CopyFile. VBS est assez indulgent ... donc ça peut marcher, mais je parie que ça cause une erreur. Vous pouvez rapidement résoudre ce problème en utilisant l'attribut "path" des objets fichier. filesystem.CopyFile file.Path, "d: \ logs terminés \" – PopeDarren

Questions connexes