1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| Option explicit
Dim srcFold ' Dossier source
Dim DestFold ' Dossier de destination
Dim oFSO,oFld,oSubFolder, Fich, FF, WS, sMsg
Set oFSO = CreateObject("Scripting.FileSystemObject")
srcFold = "D:\Fichiers"
DestFold = "C:\Tmp\"
Set WS = CreateObject("WScript.Shell")
Set Fich = oFso.OpenTextFile("Dirs.log", 2, True)' Fichier log listant tous les fichiers copiés/déplacés
ScanForFiles srcFold
Fich.Close
sMsg = "Copie terminée, Voulez-vous procéder à la suppression des fichiers sources ?"
If MsgBox(sMsg, VbYesNo, "Supprimer les fichiers sources") = VbYes Then
DelFiles srcFold
MsgBox "Suppression terminée"
Else
MsgBox "Suppression annulée"
WScript.Quit 0
End If
'========================
Sub SetFileAttr(sFile)
' Il est nécessaire de modifier les attibuts des fichiers
' pour pouvoir les copier et écraser ceux qui existeraient dans le dossier cible
Dim CM
CM = "Cmd.exe /c Attrib " & sFile & " -r -h -s"
WS.Run CM, 0, True
End Sub
'=======================
Sub ScanForFiles (stRep)
If oFSO.FolderExists(stRep) Then
Set oFld = oFSO.GetFolder(stRep)
If oFld.subFolders.count > 0 then
Fich.WriteLine "Nom = " & oFld.Path & " ; Nombre de sous-dossiers = " & oFld.SubFolders.count
For Each FF In oFld.Files
If oFld.Files.count > 0 Then
SetFileAttr FF.Path
Fich.WriteLine FF.Name
FF.Copy DestFold & FF.name, True
End If
Next
Fich.WriteLine "=======Nombre de fichiers = " & oFld.Files.count &" ========"
For each oSubFolder in oFld.subFolders
ScanForFiles oSubFolder.Path
Next
Else
If oFld.Files.count > 0 Then
Fich.WriteLine "=====" & oFld.Path & "====="
For Each FF In oFld.Files
Fich.WriteLine FF.Name
SetFileAttr FF.Path
FF.Copy DestFold & FF.name, True
Next
Fich.WriteLine "=====Nombre de fichiers = " & oFld.Files.count & "======"
Else
Fich.WriteLine "Dossiers vides : " & oFld.Path & " ; Nombre de sous-dossiers = " & oFld.SubFolders.count
End If
End If
End If
End sub
'===================
Sub DelFiles(sFold)
If oFSO.FolderExists(sFold) Then
Set oFld = oFSO.GetFolder(sFold)
If oFld.subFolders.count > 0 then
For Each FF In oFld.Files
If oFld.Files.count > 0 Then
FF.Delete True
End If
Next
For each oSubFolder in oFld.subFolders
DelFiles oSubFolder.Path
Next
Else
If oFld.Files.count > 0 Then
For Each FF In oFld.Files
FF.Delete True
Next
End If
End If
End If
End Sub |
Partager