Войти

Показать полную графическую версию : [решено] Скрипт обновления файла с проверкой по дате изменения.


CtrlD
16-07-2010, 12:19
Помогите начинающему. Нужен скрипт, который бы:
1. Сравнивал дату изменения 2-ух одинаковых файлов
2. Если файл из директории 2 старше или не существует, заменить его на файл из директории 1

Заранее спасибо.

deepred
16-07-2010, 21:31
CtrlD,

Option Explicit
On Error resume next

Dim objRootFile, objDestFile, objNoneFile
Dim objRootFSO, objDestFSO, objNoneFSO
Dim strPathRootFolder, strPathDestFolder
Dim strNameDest, strNameroot, strDateroot, strDateDest
Dim intErrLevel

strPathRootFolder = "F:\renew_oldFiles\1" ' Контролируемая директория
strPathDestFolder = "F:\renew_oldFiles\2" ' Директория с self-файлами
intErrLevel = 0

Set objRootFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objDestFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objNoneFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objRootFSO.FolderExists(strPathRootFolder) Then
If objRootFSO.FolderExists(strPathDestFolder) Then

For Each objRootFile In objRootFSO.GetFolder(strPathRootFolder).Files
strNameroot = objRootFSO.GetFileName(objRootFile)
strDateroot = DateDiff("D", objRootFile.DateLastModified, Now)

For Each objDestFile In objDestFSO.GetFolder(strPathDestFolder).Files
strNameDest = objDestFSO.GetFileName(objDestFile)
strDateDest = DateDiff("D", objDestFile.DateLastModified, Now)

IF strNameDest = strNameroot And _
strDateroot > strDateDest Then
objDestFile.Copy strPathRootFolder & "\", True
'WScript.Echo "File [" & strNameDest & "] was remove."
End If

Set objNoneFile = objNoneFSO.GetFile(strPathRootFolder&"\"&strNameDest)
If Not objNoneFSO.FileExists(objNoneFile) Then
objDestFile.Copy strPathRootFolder & "\", True
'WScript.Echo "File [" & strNameDest & "] was created."
End If
Next
Next
Else
WScript.Echo "Folder [" & strPathRootFolder & "] is not exists."
intErrLevel = 1
End If
Else
WScript.Echo "Folder [" & strPathDestFolder & "] is not exists."
intErrLevel = 2
End If

Set objRootFSO = Nothing
Set objDestFSO = Nothing
Set objNoneFSO = Nothing

WScript.Echo "Script done"
WScript.Quit intErrLevel

Строки, выделеные жирным курсивом - необязательны, нужны только для контроля
при проверке работы скрипта.

PS: Для начинающего: Объекты Windows Script Host (http://www.script-coding.info/WSH.html)

El Sanchez
17-07-2010, 10:45
Помогите начинающему »
2. Если файл из директории 2 старше или не существует, заменить его на файл из директории 1 »
Для начинающего лучше всего с CMD начинать:

@Echo Off
Set Source="C:\Source\file.txt"
Set OutputDir="C:\Output"

XCopy %Source% %OutputDir% /YDFHR




© OSzone.net 2001-2012