需要仅将文件夹A中的子文件夹移动到30天之前且B中不存在的文件夹B.

时间:2013-04-26 23:43:49

标签: vbscript

我只需将那些子文件夹从文件夹A移动到30天之后的文件夹B.如果文件夹B已包含与正在移动的文件夹同名的文件夹,则使用_1重命名要移动的文件夹,或者只是不移动文件夹。我到目前为止的代码是:

set fso = CreateObject("Scripting.FileSystemObject") 
set objFol = fso.GetFolder("T:\Collections\PPA\Cecelia Nero") 
set objSubFolders = objFol.SubFolders 
set fso2 = CreateObject("Scripting.FileSystemObject") 
set Dest = fso2.GetFolder("T:\Collections\PPA General\")

For each folder in objSubFolders 
  If not fso.FolderExists(Dest) Then
  If DateDiff("d", folder.DateLastModified, Now) > 30 Then
  fso.Movefolder folder, "T:\Collections\PPA General\" 
end if
end if
Next

1 个答案:

答案 0 :(得分:0)

If not fso.FolderExists(Dest) Then

此检查不符合您的预期。您想要验证目标文件夹中不存在要复制的文件夹,但上面的行仅检查目标文件夹本身是否不存在。将其改为:

If Not fso.FolderExists(fso.BuildPath(Dest.Path, folder.Name)) Then

如果已存在具有相同名称的目标文件夹,则为了将数字附加到复制的文件夹,您可以执行以下操作:

For Each sf In objFol.SubFolders
  If DateDiff("d", folder.DateLastModified, Now) > 30 Then
    destFolder = fso.BuildPath(Dest.Path, sf.Name)
    i = 0
    Do While fso.FolderExists(destFolder)
      i = i + 1
      destFolder = fso.BuildPath(Dest.Path, sf.Name & "_" & i)
    Loop
    sf.Move destFolder
Next