vbs實現(xiàn)只復制比目標文件更新的文件

字號:


    有時候我們需要時候備份一些文件,只有當這個文件被修改了并且不是空的時候才復制.
    因為網(wǎng)站需要頻繁的更新首頁,有時候使用cdn經(jīng)常導致首頁正在生成內(nèi)容的時候同步數(shù)據(jù)(可能是沖突,經(jīng)常導致首頁是空的),這就想了先生成一個不是首頁的index2.htm然后再復制一遍為index.htm,這樣index2的頻繁讀寫也沒問題了。所以先判斷index2.htm不是空的時候才復制,而且必須是比index.htm更新的時候才復制。這樣就需要一些腳本的支持了。
    前幾天寫了一個(bat+xcopy實現(xiàn)只復制比目標文件更新的文件)還是出現(xiàn)為空的情況,這里特加些功能,參考很多網(wǎng)站的文章,感謝百度的結(jié)果很給力。
    先來個bat版的
    代碼如下:
    @echo off
    ::每5分鐘復制以下首頁
    for /f %%i in ('dir /b c:\index2.htm') do (
    set indexdx=%%~zi
    )
    if %indexdx% gtr 5120 (
    echo y | xcopy c:\index2.htm /d /r /k c:\index.htm
    )
    其中for /f %%i in ('dir /b c:\index2.htm') do ( set indexdx=%%~zi ) 是bat中獲取index2.htm文件大小的。
    然后通過if %indexdx% gtr 5120 ( 實現(xiàn)判斷是不是大于5120個字節(jié)主要就是下面這個代碼了功能更強,也比較簡單.
    代碼如下:
    dim fso
    set fso = createobject(scripting.filesystemobject)
    set fn2=fso.getfile(c:\index2.htm)
    flsize2=fn2.size
    fldate2=fn2.datelastmodified
    set fn=fso.getfile(c:\index.htm)
    flsize1=fn.size
    fldate1=fn.datelastmodified
    if fso.fileexists(c:\index2.htm) and flsize2>50000 and fldate2>fldate1 then
    fso.getfile(c:\index2.htm).copy(c:\index.htm)
    if err.number=0 then writehistory 成功&now(),log.txt
    end if
    sub writehistory(hischars, path)
    const forreading = 1, forappending = 8
    dim fso, f
    set fso = createobject(scripting.filesystemobject)
    set f = fso.opentextfile(path, forappending, true)
    f.writeline hischars
    f.close
    end sub
    還有日志功能,當前bat下也可以的。需要的可以自己擴展下。