Board logo

标题: [问题求助] VBS如何将指定文件复制到指定目录/文件夹的多个子文件夹里 [打印本页]

作者: a18942235650    时间: 2017-11-6 18:24     标题: VBS如何将指定文件复制到指定目录/文件夹的多个子文件夹里

本帖最后由 pcl_test 于 2017-11-6 18:35 编辑

VBS批量复制。。。

如何实现把指定D盘的指定文件到D盘的一个文件夹里的所有子文件夹里,
假设D盘文件名测试.txt, 需要复制到D盘的一个文件夹里,但是这个文件夹里里面有很多小文件夹,我的意思就是全部复制到这个小文件夹。。。。不太了解,有知道的么
作者: 9zhmke    时间: 2017-11-21 16:34

我以前写了功能模块。给你自己按需要增减功能吧,我没那么多时间了:
  1. Function comp(path1,path2,switch) '比较A和B两个文件夹,0为根据A文件夹中的已有文件删除B文件夹中的文件;1为复制A中比较小的到B;2为复制A中比较大的到B;
  2.     path1=trim(path1):path2=trim(path2):comp="":tmp2="":tmp3="" '去掉前后空格、初使化临时变量
  3.     if instr(path1,"%") then path1=WshShell.ExpandEnvironmentStrings(path1)'还原带环境变量的
  4.     if instr(path2,"%") then path2=WshShell.ExpandEnvironmentStrings(path2)
  5.     if path1="" then comp=comp & path1 & "文件夹不能为空. "
  6.     if path2="" then comp=comp & path2 & "文件夹不能为空. "
  7.     if not objFSO.FolderExists(path1) then comp=comp & "找不到" & path1 & "文件夹. "
  8.     if not objFSO.FolderExists(path2) then comp=comp & "找不到" & path2 & "文件夹. "
  9.     if right(path1,1)=":" then path1=path1 & "\"
  10.     if right(path2,1)=":" then path2=path2 & "\"
  11.     if instr(path1,"?") or instr(path1,"*") then comp="请不要使用通配符:" & path1 & ". "
  12.     if instr(path2,"?") or instr(path2,"*") then comp="请不要使用通配符:" & path2 & ". "
  13.     if path1=path2 then comp="comp不能处理同一文件夹:"  & path1 & "和:" & path2
  14.     if  comp<>"" then Exit Function                      '以上为保证实施条件,以下为正式程序
  15.     Set oFolder = objFSO.GetFolder(path1)  
  16.     Set oSubFolders = oFolder.SubFolders  
  17.     Set oFiles = oFolder.Files
  18.     For Each oFile In oFiles  
  19.         tmp2=path2 & replace(oFile.Path,path1,"")
  20.         if objFSO.FileExists(tmp2) then
  21.             if switch=0 then objFSO.deletefile tmp2,true
  22.             set objFile2 = objFSO.GetFile(tmp2)         'tmp1.WriteLine "删除:" & tmp2
  23.             if oFile.Size > objFile2.Size and switch=2 then tmp3="replace"
  24.             if oFile.Size < objFile2.Size and switch=1 then tmp3="replace"
  25.             if tmp3="replace" then
  26.                 'tmp1.WriteLine tmp2 & "替换成:" & oFile
  27.                 count=count+1
  28.                 set objFile2 = nothing
  29.                 objFSO.CopyFile oFile, tmp2,True        '替换B目录文件
  30.             end if
  31.         end if
  32.     Next  
  33.     For Each oSubFolder In oSubFolders  
  34.         tmp2=path2 & replace(oSubFolder.Path,path1,"")  '处理下面的子目录
  35.         comp oSubFolder.Path,tmp2,switch                '递归每个文件夹,并把子目录和参数传递下去  
  36.     Next  
  37.     Set oFolder = Nothing  
  38.     Set oSubFolders = Nothing
  39.     comp="已顺利完成."
  40. End Function  
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2