2010-05-14 7 views
2

J'essaie de concevoir ce script qui est censé être utilisé comme partie d'un script d'ouverture de session pour beaucoup d'utilisateurs. Et ce script est fondamentalement censé prendre un dossier source et un dossier de destination comme simplement s'assurer que le dossier de destination a exactement le même contenu que le dossier source. Mais ne copiez que si le tampon datemodified du fichier source est plus récent que le fichier de destination.Vbscript - Comparer et copier des fichiers du dossier si plus récents que les fichiers de destination

J'ai réfléchi sur ce pseudo-code de base, en essayant juste de m'assurer que c'est fondamentalement valide et solide.

Dim strSourceFolder, strDestFolder 
strSourceFolder = "C:\Users\User\SourceFolder\" 
strDestFolder = "C:\Users\User\DestFolder\" 

For each file in StrSourceFolder 
    ReplaceIfNewer (file, strDestFolder) 
Next 

Sub ReplaceIfNewer (SourceFile, DestFolder) 

    Dim DateModifiedSourceFile, DateModifiedDestFile 
    DateModifiedSourceFile = SourceFile.DateModified() 
    DateModifiedDestFile = DestFolder & "\" & SourceFile.DateModified() 

    If DateModifiedSourceFile < DateModifiedDestFile 
     Copy SourceFile to SourceFolder 
    End if 

End Sub 

Est-ce que cela fonctionnerait? Je ne suis pas tout à fait sûr comment cela peut être fait, mais je pourrais probablement passer toute la journée à le comprendre. Mais les gens ici sont généralement si incroyablement intelligents qu'avec votre aide cela prendrait beaucoup moins de temps :)

+0

Que faire si le fichier de destination est manquant? – Fionnuala

Répondre

2

Votre algorithme semble bon. En pratique, vous devez obtenir les fichiers en utilisant un FileSystemObject et récupérer leurs propriétés DateLastModified respectives. Vous pouvez faire un DateDiff sur les deux dates pour comparer ce qui est plus tôt.

exemples modifiés légèrement de DevGuru:

Dim filesys,demofile, date1, date2 
Set filesys = CreateObject("Scripting.FileSystemObject") 
Set demofile = filesys.GetFile("filename1") 
date1 = demofile.DateLastModified 
demofile = filesys.GetFile("filename2") 
date2 = demofile.DateLastModified 

If DateDiff("d", date1, date2) > 0 Then 
    'date2 is more recent than date1, comparison by "day" ' ** Improvement ** 
End If 

Modifier l'URL: mal orthographiés.


Amélioration Dans le commentaire, ont été échangés "date1" et "date2". Le document MSDN dit: Si date1 fait référence à une date ultérieure à date2, la fonction DateDiff renvoie un nombre négatif. http://msdn.microsoft.com/en-us/library/xhtyw595(v=vs.84).aspx

+0

Cela semble très prometteur :) Je vais l'essayer :) –

Questions connexes