首页 > √文章精选 > 对比更新 vbs
viyin.net

对比更新 vbs

2010年3月26日 发表评论 阅读评论
  1. Option Explicit
  2.  
  3. sub copyfol(sDir,Ddir)
  4.  'sDiry要对比的文件夹,,Ddir要操作文件夹
  5.    dim fso,fol,fs,f1, objfile
  6.    dim arrFiles(),arrSize(),arrModified()
  7.    dim i
  8.    if right(ddir,1)<>"\" then ddir =ddir & "\"
  9.    if right(sdir,1)<>"\" then sdir =sdir & "\"
  10.    Set fso = CreateObject("Scripting.FileSystemObject")
  11.    '判断文件是否存在
  12.    if not (fso.FolderExists(sdir))  then
  13.        msgbox "找不到文件夹:" & sdir
  14.        exit sub
  15.    end if
  16.    if not (fso.FolderExists(ddir))  then
  17.         msgbox "找不到文件夹:" & sdir
  18.         exit sub
  19.    end if
  20.  
  21.    '获得要操作的文件列表及相关信息并储存到数组
  22.    set fol=fso.GetFolder(ddir)
  23.    set fs=fol.files
  24.    i=0
  25.    redim arrFiles(fs.count-1)
  26.    redim arrSize(fs.count-1)
  27.    redim arrModified(fs.count-1)
  28.    for each f1 in fs
  29.       arrfiles(i)=f1.name
  30.       arrSize(i)=f1.size
  31.       arrModified(i)=f1.DateLastModified
  32.       i=i+1
  33.    next
  34.    '把要操作的文件夹逐一根要对比的文件比较,不同则覆盖,多余就删除,没有就复制
  35.    set fol=fso.GetFolder(sdir)
  36.    set fs=fol.files
  37.    for i = 0 to ubound(arrfiles)
  38.        '文件存在则比较是否相同,否则删除
  39.  
  40.        dim delfile  '要操作类型,
  41.        delfile=false
  42.        for each f1 in fs
  43.            if strcomp(arrfiles(i),f1.name,vbTextCompare)=0 then             
  44.                if arrsize(i)<> f1.size or arrModified(i)<>f1.DateLastModified then
  45.                   fso.copyfile f1.path, ddir & arrfiles(i),true       
  46.                end if
  47.                delfile=true '如果文件存在
  48.                exit for
  49.             end if
  50.         next
  51.         if not delfile then                 
  52.             set objfile=fso.getfile(ddir &arrfiles(i))
  53.             objfile.Delete (true)
  54.          end if         
  55.     next
  56.    '如果对比目录sdir中有文件是要操作目录ddir中没有的,则复制到ddir
  57.    for each f1 in fs
  58.        delfile=false
  59.        for i=0 to ubound(arrfiles)
  60.           if strcomp(f1.name,arrfiles(i),vbtextcompare)=0 then
  61.              delfile=true
  62.              exit for
  63.           end if
  64.         next
  65.          if right (ddir,1)<>"\" then ddir=ddir &"\"
  66.         if not delfile then         
  67.            f1.copy ddir,true
  68.         end if
  69.    next
  70.    '以下代码处理子文件夹 
  71.    dim fols
  72.    set fol=Fso.GetFolder(sdir)
  73.    set fols=fol.SubFolders
  74.    for each f1 in fols
  75.       if not (fso.FolderExists(ddir & f1.name)) then
  76.          fso.CreateFolder(ddir & f1.name)
  77.       end if
  78.       copyfol sdir & f1.name ,ddir & f1.name
  79.    next
  80. end sub
  81.  
  82.    '以下是对比路径 第一个是远程路径 第二个是本地路径
  83. copyfol "c:\viyin.net","C:\www.viyin.net"
viyin.net
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.