Я просматриваю папки в общей папке, копирую всю структуру, если папки или подпапки содержат файлы старше 90 дней.(перемещать файлы старше указанной структуры дней - копировать, если в папках содержатся указанные устаревшие файлы)
У меня есть сценарий, который я нашел в Интернете, я изменил его, чтобы действительно правильно использовать функцию DateAdd, и кажется, что файлы перемещаются поверхструктура не копируется.
Пример.
2 Совместное использование местоположений, содержащих файлы (это не точная структура, а пример)
Source
1. \\Share1\folder
2. \Folder\Files
3. \Folder\Files
4. \Folder
1. \\Share2\folder
2. \Folder\Files
3. \Folder\Files
4. \Folder
Destination
1. \\Share2\folder
2. \Folder\Files
3. \Folder\Files
4. \Folder
1. \\Share2\folder
2. \Folder\Files
3. \Folder\Files
4. \Folder
Dim objFSO, ofolder, objStream
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("scripting.filesystemobject")
Set objNet = CreateObject("WScript.NetWork")
Set FSO = CreateObject("Scripting.FileSystemObject")
set outfile = fso.createtextfile("Move-Result.txt",true)
SPath = "Y:\test"
Sdest = "Y:\Archive\"
ShowSubfolders FSO.GetFolder(spath)
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders
CheckFolder(subfolder)
ShowSubFolders Subfolder
Next
End Sub
'CheckFolder(objFSO.getFolder(SPath))
Sub CheckFolder(objCurrentFolder)
Dim strTempL, strTempR, strSearchL, strSearchR, objNewFolder, objFile
Const OverwriteExisting = TRUE
currDate = Date
dtmDate = DateAdd("d",-90,Now)
strTargetDate = ConvDate(dtmDate)
For Each objFile In objCurrentFolder.Files
FileName = objFile
'WScript.Echo FileName
'strDate = ConvDate(objFile.DateCreated)
strDate = ConvDate(objFile.DateLastModified)
If strDate < strTargetDate Then
objFSO.MoveFile FileName, Sdest
outfile.writeline Filename
End If
Next
End Sub
Function ConvDate (sDate) 'Converts MM/DD/YYYY HH:MM:SS to string YYYYMMDD
strModifyDay = day(sDate)
If len(strModifyDay) < 2 Then
strModifyDay = "0" & strModifyDay
End If
strModifyMonth = Month(sDate)
If len(strModifyMonth) < 2 Then
strModifyMonth = "0" & strModifyMonth
End If
strModifyYear = Year(sDate)
ConvDate = strModifyYear & strModifyMonth & strModifyDay
End Function