[英]Windows Script to move files older than 30 days with a specific extension to another folder
I am in need of a script preferably a vbscript for a Windows Server which will archive files in a folder to another folder.我需要一个脚本,最好是用于 Windows Server 的 vbscript,它将文件夹中的文件存档到另一个文件夹。 Say from
\\\\folder1\\
to \\\\folder1\\archive\\
从
\\\\folder1\\
到\\\\folder1\\archive\\
The files have the extensions of .doc
and .xls
这些文件的扩展名为
.doc
和.xls
But also I only want to move files older than 30 days.但我也只想移动超过 30 天的文件。
Is there a simple way to do this?有没有一种简单的方法可以做到这一点?
Since you tagged your question with batch-file , I suppose you are accepting batch file solutions too.由于您用batch-file标记了您的问题,我想您也接受了批处理文件解决方案。
Here you are:这个给你:
pushd \\folder1
forfiles /M *.doc /D -30 /C "cmd /C if @isdir==FALSE move @file .\archive\"
forfiles /M *.xls /D -30 /C "cmd /C if @isdir==FALSE move @file .\archive\"
popd
Due to the syntax you used for the source directory path ( \\\\folder1\\
) I suppose it is given by a UNC path.由于您用于源目录路径(
\\\\folder1\\
)的语法,我想它是由 UNC 路径给出的。 So I use the pushd
command which understands such, maps it to a temporary drive it creates and changes the current working directory to the root of that drive.所以我使用了理解这样的
pushd
命令,将它映射到它创建的临时驱动器并将当前工作目录更改为该驱动器的根目录。
The forfiles
command is capable of enumerating a given directory (tree) and iterates through all items that meet a certain mask and modification date (age). forfiles
命令能够枚举给定目录(树)并遍历满足特定掩码和修改日期(年龄)的所有项目。 Since forfiles
supports a single mask only, I simply use it twice.由于
forfiles
仅支持单个掩码,因此我只需使用它两次。
The popd
command at the end removes that temporary drive which has been created by pushd
.最后的
popd
命令删除了由pushd
创建的临时驱动器。
For more details about each used command, type it into the command prompt, followed by /?
有关每个使用的命令的更多详细信息,请在命令提示符中键入它,后跟
/?
. .
Below code can do the required.I just added comments here to explain the code here.下面的代码可以做需要的。我只是在这里添加了注释来解释这里的代码。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.