Permission refusée 800A0046
Bonjour tout le monde,
Je suis bloqué sur un script qui me permet de faire du ménage sur des répertoires communs.
Le but du script est de créer une copie des répertoires en respectant l'arborescence et antérieur à une date défini.
Mon problème se pose sur les répertoires sur lesquels je n'ai pas les droits, je ne souhaite faire aucune action sur ces répertoires. Ils doivent donc rester dans le répertoire source.
Erreur : Permission refusée
Code : 800A0046
Le but du jeu est passer au répertoire suivant et de continuer à se dérouler.
J'ai réussi en rajoutant "on error resume next" à deux endroits du code, à ne plus afficher le message d'erreur, le script continue donc à s’exécuter en effectuant la copie de tout les répertoires suivants mais sans les fichiers se trouvant à l'intérieur.
Merci pour votre aide.
Code:
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
| 'Variable d'execution du Script
lectsource = "E:\Datas\Commun\" 'Lecteur Source des fichiers à analyser
lectdest = "E:\Archives Commun\Commun\" 'Lecteur de Destination
jourdepl = "01" 'Jour de la date d'archivage
moisdepl = "07" 'Mois de la date d'archivage
anneedepl = "2015" 'Année de la date d'archivage
'Lancement du VBS sur le lecteur source
deplacementfichier lectsource
'procédure d'analyse et d'action sur les fichiers
Sub deplacementfichier(fullPath)
Dim fso, ws
Set ws = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = fso.GetFolder(fullPath)
On Error Resume Next
For Each Fichier In Dossier.Files
If dateserial(year(Fichier.DateLastModified),month(Fichier.DateLastModified),day(Fichier.DateLastModified)) <= dateserial(anneedepl, moisdepl, jourdepl) Then
'recup du chemin de fichier
valeurfich = 1
while left(Right(fullpath, valeurfich),1) <> "\"
valeurfich = valeurfich +1
Wend
valdecoup = len(left(fullpath, len(fullpath)-len(Right(fullpath, valeurfich))+1))-len(lectsource)
if valdecoup < 0 then valdecoup = 0
cheminfichier = right(left(fullpath, len(fullpath)-len(Right(fullpath, valeurfich))+1),valdecoup)
'appel pour recréation de l'arborescence
CreateSubDirectories(lectdest & cheminfichier)
'copie (copyFile) ou déplacement (moveFile) du fichier
fso.moveFile Fichier.path, lectdest & right(Fichier.path,len(Fichier.path)-len(lectsource)), true
End If
On Error Resume Next
Next
'Même Analyse pour tous les sous-repertoires
For Each SousDossier In Dossier.SubFolders
CreateSubDirectories(lectdest & right(SousDossier.Path,len(SousDossier.path)-len(lectsource))) 'Permet la recréation d'un dossier même si vide ou rien à déplacer
deplacementfichier SousDossier.Path
Next
End Sub
'procédure de recréation de l'arborescence
Sub CreateSubDirectories(fullPath)
On error resume next
Set objFSO = CreateObject("Scripting.FileSystemObject")
str = fullPath
If Right(str, 1) <> "\" Then
str = str & "\"
End If
strArray = Split(str, "\")
basePath = strArray(0) & "\"
For i = 1 To UBound(strArray) - 1
If Len(newPath) = 0 Then
newPath = basePath & newPath & strArray(i) & "\"
Else
newPath = newPath & strArray(i) & "\"
End If
Set objFolder = objFSO.CreateFolder(newPath)
Next
End Sub |