将过去24小时内修改的文件复制到不同于源的文件夹名称

时间:2014-02-06 22:00:31

标签: file-io vbscript

我想创建一个执行以下操作的脚本:

从本地驱动器上的源文件夹“reportexport01”,“reportexport02”进行复制

从过去24小时修改

复制到共享驱动器上的目标文件夹“deptreport01”,“deptreport02”

我将使用此脚本创建一个每晚午夜运行的计划任务,并将前一天的报告复制到部门共享驱动器。令我难过的是目标文件夹的命名方式与源文件夹不同。不幸的是,我无法更改命名方案,因为其他自动报告使用这些文件夹。在我知道之前的24小时和不同的文件夹名称要求之前,下面是我原始脚本只是简单地复制了文件夹。

Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFolder "E:\export\reportexport01", "\\sharedrive\deptreport01"
FSO.CopyFolder "E:\export\reportexport02", "\\sharedrive\deptreport02"

这是我到目前为止所拥有的

Option Explicit

Dim FSO, folder, file
Dim Filepath(4)
Filepath(0)="E:\TestExport\Src01"
Filepath(1)="\\deptshare\TestExport\Dest01"
Filepath(2)="E:\TestExport\Src02"
Filepath(3)="\\deptshare\TestExport\Dest02"

Set FSO = CreateObject("Scripting.FileSystemObject")

Set folder = fileSystem.GetFolder(Filepath(0))

for each file in folder.Files
    if file.DateLastModified > dateadd("h", -24, Now) then
        FSO.CopyFile "Filepath(0)", "Filepath(1)"
        WScript.Echo file.Name & " last modified at " & file.DateLastModified
    end if
next

Set folder = fileSystem.GetFolder(Filepath(2))

for each file in folder.Files
    if file.DateLastModified > dateadd("h", -24, Now) then
        FSO.CopyFile "Filepath(2)", "Filepath(3)"
        WScript.Echo file.Name & " last modified at " & file.DateLastModified
    end if

在同事的一些重要意见之后清理干净

Option Explicit

Dim oFSO, oFolder, oFile, i

Dim arrSourcePaths : arrSourcePaths = Array( _
                                            "E:\TestExport\Src01", _
                                            "E:\TestExport\Src02" _
                                           )

Dim arrDestinationPaths : arrDestinationPaths = Array( _
                                            "\\deptshare\TestExport\Dest01", _
                                            "\\deptshare\TestExport\Dest02" _
                                            )

oFSO = CreateObject("Scripting.FileSystemObject")

For i = 0 To UBound(arrSourcePaths)
    oFolder = oFSO.GetFolder(arrSourcePaths(i))

    For Each oFile In oFolder.Files
        WScript.Echo oFile.Name & " was last modified at " & oFile.DateLastModified '
        If oFile.DateLastModified < DateAdd("h", -24, Now) Then
            oFSO.CopyFile (arrSourcePaths(i) & "\" & oFile.Name, arrDestinationPaths(i) & "\" & oFile.Name)                       
        End If
    Next
Next

不幸的是,我对子程序中的parens给出了错误。删除后,我收到oFSO =“对象不支持此属性或方法的错误。

1 个答案:

答案 0 :(得分:0)

You can't use pararentheses when calling a Sub!

oFSO.CopyFile (arrSourcePaths(i) & "\" & oFile.Name, arrDestinationPaths(i) & "\" & oFile.Name)   

==&GT;

oFSO.CopyFile arrSourcePaths(i) & "\" & oFile.Name, arrDestinationPaths(i) & "\" & oFile.Name

将对象分配给变量需要Set

oFSO = CreateObject("Scripting.FileSystemObject")

==&GT;

Set oFSO = CreateObject("Scripting.FileSystemObject")