Vbscript - сравнивать и копировать файлы из папки, если они новее целевых файлов

Я пытаюсь разработать этот сценарий, который должен использоваться как часть сценария входа для многих пользователей. И этот сценарий, как правило, должен принимать исходную папку и папку назначения, поскольку в основном просто убедитесь, что папка назначения имеет точно такое же содержимое, что и исходная папка. Но копировать только в том случае, если метка даты изменения исходного файла новее, чем целевой файл.

Я продумывал этот базовый псевдокод, просто пытаясь убедиться, что он в действительности действителен и надежен.

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

Будет ли это работать? Я не совсем уверен, как это можно сделать, но я, вероятно, мог бы потратить весь день, чтобы понять это. Но люди здесь, как правило, настолько удивительно умны, что с вашей помощью это займет намного меньше времени:)

2 ответа

Решение

Ваш алгоритм выглядит хорошо. На практике вам нужно получить файлы с помощью FileSystemObject и получить их соответствующие свойства DateLastModified. Вы можете сделать DateDiff для двух дат, чтобы сравнить, что раньше.

Слегка измененные примеры от 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

Изменить: с ошибкой URL.


Улучшение В комментарии были заменены "date1" и "date2". Документ MSDN гласит: Если date1 ссылается на более позднее время, чем date2, функция DateDiff возвращает отрицательное число. http://msdn.microsoft.com/en-us/library/xhtyw595(v=vs.84).aspx

Ваш код выглядит разумно. Просто обратите внимание на файлы только для чтения и тому подобное.

Вы можете использовать FileSystemObject чтобы сделать реальные операции с файлами, просто посмотрите на:

http://msdn.microsoft.com/en-us/library/6kxy1a51%28VS.85%29.aspx

Другие вопросы по тегам