Тема: VBScript: BackUp файлов с рекурсивным перебором каталогов
Пример скрипта, который делает BackUp файлов с рекурсивным перебором каталогов. Копируем файлы из одного определённого каталога в другой. Копируем только файлы с датой создания, меньшей указанной. В каталоге скрипта создаётся лог-файл CopyLog.log.
InitialFolder = "C:\Job" ' каталог, откуда копируем
TargetFolder = "C:\Temp\Temp" ' каталог, куда копируем
ControlDate = CDate("01.08.2006") ' контрольная дата (копируем файлы с датой создания раньше этой)
'====================================================================
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
LogPath = objFSO.GetParentFolderName(WScript.ScriptFullName)
Set LogStream = objFSO.OpenTextFile(LogPath & "\CopyLog.log", 8, True)
LogStream.WriteLine "Начало копирования " & Now()
CopyFiles InitialFolder
LogStream.WriteLine "Конец копирования: " & Now()
LogStream.Close
' процедура рекурсивно перебирает файлы в каталоге
Sub CopyFiles(FolderPath)
On Error Resume Next
Set objFolderItems = objShellApp.NameSpace(FolderPath).Items()
For Each objFolderItem In objFolderItems
If objFolderItem.IsFolder And LCase(Right(objFolderItem.Name, 4)) <> ".zip" Then
CopyFiles objFolderItem.Path
Else
Set objFile = objFSO.GetFile(objFolderItem.Path)
If objFile.DateCreated < ControlDate Then
CopyFile objFolderItem.Path
End If
End If
Next
End Sub
' процедура копирует файл
Sub CopyFile(FilePath)
On Error Resume Next
SubPath = Mid(FilePath, Len(InitialFolder) + 1)
TargetPath = TargetFolder & SubPath
FolderPath = objFSO.GetParentFolderName(TargetPath)
If Not objFSO.FolderExists(FolderPath) Then
CreateFolder FolderPath
End If
' если у файла назначения есть атрибут ReadOnly, снимаем его
If objFSO.FileExists(TargetPath) Then
Set objFile = objFSO.GetFile(TargetPath)
If objFile.Attributes And 1 Then
objFile.Attributes = objFile.Attributes - 1
End If
End If
objFSO.CopyFile FilePath, TargetPath, True
If Err.Number <> 0 Then
LogStream.WriteLine
LogStream.WriteLine FilePath
LogStream.WriteLine Err.Description
LogStream.WriteLine
Err.Clear
Else
LogStream.WriteLine TargetPath
End If
End Sub
' процедура создаёт каталог
Sub CreateFolder (FolderPath)
On Error Resume Next
ParentFolder = objFSO.GetParentFolderName(FolderPath)
If Not objFSO.FolderExists(ParentFolder) Then
CreateFolder ParentFolder
End If
objFSO.CreateFolder FolderPath
End Sub
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.