0

我只需要将 30 天前的子文件夹从文件夹 A 移动到文件夹 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
4

1 回答 1

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
于 2013-04-26T23:58:24.907 回答