Option Explicit
On Error Resume Next
Dim oFSO, oFolder, sSrcDirectoryPath, sDstDirectoryPath
Dim oFileCollection, oFile, sDir
Dim iDaysOld
sSrcDirectoryPath = "C:\folder1" 'Source folder location
sDstDirectoryPath = "C:\folder1\archive" ' archieve folder location
iDaysOld = 30
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sSrcDirectoryPath)
Set oFileCollection = oFolder.Files
For each oFile in oFileCollection
'Change the code here if any other file extension also required to be archieved.
If (LCase(Right(Cstr(oFile.Name), 3)) = "doc" Or LCase(Right(Cstr(oFile.Name), 3)) = "xls") Then
If (oFile.DateLastModified < (Date() - iDaysOld)) Then
oFile.Move(sDstDirectoryPath & "\" & oFile.Name)
End If
End If
Next
Set oFSO = Nothing
Set oFolder = Nothing
Set oFileCollection = Nothing
Set oFile = Nothing
2条答案
按热度按时间wn9m85ua1#
既然你用batch-file标记了你的问题,我想你也接受批处理文件的解决方案。
给你:
由于源目录路径(
\\folder1\
)使用的语法,我认为它是由UNC路径给出的,所以我使用pushd
命令,它理解这种情况,将其Map到它创建的临时驱动器,并将当前工作目录更改为该驱动器的根目录。forfiles
命令能够枚举给定的目录(树),并遍历满足特定掩码和修改日期(年龄)的所有项。由于forfiles
只支持单个掩码,因此我只使用了两次。最后的
popd
命令将删除由pushd
创建的临时驱动器。有关每个使用的命令的详细信息,请在命令提示符下键入该命令,然后键入
/?
。2w3rbyxf2#
下面的代码可以做所需的。我只是在这里添加注解来解释这里的代码。