比较/复制最大文件到新文件夹

时间:2015-08-25 17:53:29

标签: vbscript

我想做的是:

  1. 将文件从单个主文件夹下的各种子文件夹复制到目标文件夹。
  2. 复制时有三个选项:
    1. 如果目标文件夹中没有文件,则复制。
    2. 如果文件存在,请复制文件大小大于目标文件。
    3. 如果文件存在并且两者都是相同的文件大小比较日期/时间,并且如果是最近的则复制。
  3. 到目前为止,这是我的伪代码:

    Dim filesys, strSourceFile, strDestFolder, strDestFile
    
    Set filesys = CreateObject("Scripting.FileSystemObject")
    strSourceFile = S:\SoCal\Section_2\*\Autogen\texture\*.agn
    strDestFolder = F:\ADDON_SCENERY\simwestSOCAL\texture
    strDestFile = F:\ADDON_SCENERY\simwestSOCAL\texture\*.agn
    
    COPY each file in strSourceFolder
    If IsEmpty (SourceFile, DestFolder)
    Else If (SourceFile FileSize > DestFile)
    Else If (SourceFile DateTime > DestFile DateTime) 
    Then 'keep/copy most recent file
    End if
    

    我是否在正确的轨道上? 我需要添加循环吗? 可以比较文件大小吗?我的所有研究都没有发现这一点。 我可以将日期和时间与文件进行比较吗?

    作为我原始帖子的更新...(希望我正确遵循论坛规则),

    我花了最近几个星期不间断阅读 - 阅读 - 阅读 - 测试 - 失败 - 测试。我很高兴地说(并且有点自豪),我已经完成了我的第一个脚本......它似乎按计划工作,但仅用于一个文件。我现在需要将其转换为适用于我的' sourcefolder'。

    中的所有文件

    我有点"脑死亡"因此,任何转换此方向的方向都将受到最高的赞赏。我知道我需要循环但是什么类型和在哪里?我是否将引用文件的所有内容重命名为文件夹或使用' * .txt'对于文件?与此同时,我将继续学习。

    这是我的脚本(是的,MsgBox很多,所以我可以按照脚本路径):

    dim dFolder 
    dFolder = "S:\Scripting Workfolder\destfolder\"
    dim dFile
    dFile= "S:\Scripting Workfolder\destfolder\File 1.txt"
    dim sFile
    sFile = "S:\Scripting Workfolder\sourcefolder\File 1.txt"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    'Check to see if the file already exists in the destination folder
    
    If Not fso.FileExists(dFile) Then
        MsgBox "File does not exist - will copy over to dFolder"
        fso.CopyFile sFile, dFolder, true
        Elseif fso.FileExists(dFile) Then 
        MsgBox "File already exist in destination folder determine largest"
        ReplaceIfLarger sFile, dFile
    End If
    
    Sub ReplaceIfLarger(sFile, dFile)
        const overwrite_existing = true
        dim objFSO
        set objFSO = createobject("Scripting.FileSystemObject")
    
        dim objSourceFile  
        set objSourceFile = objFSO.GetFile(sFile)
        'dim kbSourceSize
        kbSourceSize = objSourceFile.size   
    
        dim objTargetFile
        set objTargetFile = objFSO.GetFile (dFile)
        'dim kbTargetSize
        kbTargetSize = objTargetFile.size
    
        If kbSourceSize > kbTargetSize Then
        MsgBox "Source file is LARGER and will overwrite to dest folder"
        objFSO.CopyFile objSourceFile.Path, objTargetFile.Path, overwrite_existing
        ElseIf kbSourceSize < kbTargetSize Then
        MsgBox "Source file is smaller - Will not overwrite to dest folder"
        Else
        ReplaceIfNewer sFile, dFile 
        End If
    End Sub
    
    Sub ReplaceIfNewer(sFile, dFile)
        MsgBox "Both files exist and are the same size. Keep newest file"
        const overwrite_existing = true
        dim objFSO
        set objFSO = createobject("Scripting.FileSystemObject")
    
        dim dtmSourceFile  
        set dtmSourceFile = objFSO.GetFile(sFile)
    
        dim dtmTargetFile
        set dtmTargetFile = objFSO.GetFile(dFile) 
    
        If (dtmSourceFile.DateLastModified > dtmTargetFile.DateLastModified) then
        MsgBox "Source File is Newer than Target File - Overwrite Target file"
        objFSO.CopyFile dtmSourceFile.Path, dtmTargetFile.Path, overwrite_existing
        Else 
        MsgBox "Source File is Older than Target File - Will not overwrite file"
        End If
    End Sub 
    

0 个答案:

没有答案