0

フォルダー 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
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 に答える