VBScript挂在CopyFile操作上

时间:2018-10-15 14:04:13

标签: vbscript

我正在尝试编写一个函数,将服务器文件上的修改日期与客户端的日期进行比较,如果客户端文件较旧,则将其覆盖。这作为组策略启动脚本的一部分运行。创建tmp苍蝇是作为调试步骤,以查看代码在哪里卡住。创建了copyfile.tmp,但没有创建copydone.tmp。这些文件都不是只读的,并且在本地SYSTEM上下文中运行,该上下文具有所需的所有访问权限。

文件全部存在。如果客户端没有该文件,我已经在脚本的前面部分成功地将服务器文件复制到了客户端。 (oFSO是文件系统对象,strWinTemp是Windows中系统的临时目录;前面已定义)

'Replace clientfile if older than servfile
Sub GetNewerFile(clientfile,servfile)
    Dim dtmLocalDate
    Dim dtmServerDate
    Dim oLocalFile
    Dim oServerFile
    Set oLocalFile = oFSO.GetFile(clientfile)
    dtmLocalDate = oLocalFile.DateLastModified
    Set oServerFile = oFSO.GetFile(servfile)
    dtmServerDate = oServerFile.DateLastModified

    If Not oFSO.FileExists(strWinTemp & "\" & "getnewerfile.tmp") Then oFSO.CreateTextFile(strWinTemp & "\" & "getnewerfile.tmp")
    If DateDiff("d", dtmServerDate, dtmLocalDate) > 0 Then
        'dtmServerDate is more recent than dtmLocalDate, comparison by "day"
        If Not oFSO.FileExists(strWinTemp & "\" & "copyfile.tmp") Then oFSO.CreateTextFile(strWinTemp & "\" & "copyfile.tmp")
        oFSO.CopyFile oServerFile, oLocalFile, 1
        If Not oFSO.FileExists(strWinTemp & "\" & "copydone.tmp") Then oFSO.CreateTextFile(strWinTemp & "\" & "copydone.tmp")
    End If
End Sub

1 个答案:

答案 0 :(得分:-2)

我用以下内容替换了DateDiff检查和End Sub之间的行:

If oFSO.FileExists(clientfile) then oFSO.DeleteFile(clientfile)
oFSO.CopyFile servfile, clientfile, TRUE