Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Скрипт обновления файла с проверкой по дате изменения. (http://forum.oszone.net/showthread.php?t=180720)

CtrlD 16-07-2010 12:19 1454438

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

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

deepred 16-07-2010 21:31 1454730

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

El Sanchez 17-07-2010 10:45 1454889

Цитата:

Цитата CtrlD
Помогите начинающему »

Цитата:

Цитата CtrlD
2. Если файл из директории 2 старше или не существует, заменить его на файл из директории 1 »

Для начинающего лучше всего с CMD начинать:
Код:

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

XCopy %Source% %OutputDir% /YDFHR



Время: 08:38.

Время: 08:38.
© OSzone.net 2001-