Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script VBS qui ne s'execute pas sur un a cause de permissions refusées !!!

10 réponses
Avatar
toon
Bonjour.

J'essai d'executer un programme vbs afin que celui-ci me supprime les
fichiers datant de plus de 30 jours. En effet, sur mon reseau, j'ai mis en
place un espace temporaire d'echange de fichier, mais etant donne que
personne ne fait le menage apres, et bien je suis oblige de le faire moi
meme, d'ou le script ci-dessous de nettoyage automatique.
Ca marche, mais lorsque je le planifie dans une tache planifie avec un
compte administrateur en plus, ca ne marche pas car il me dit que je n'ai
pas les droits.

Ou je dois chercher ???


Script ...
'
' clean_space.vbs - v1.0
'
' Programme de nettoyage automatique d'un repertoire.
' Initialement prévu pour la zone d'échange temporaire de la ressource de
cluster COMMUN1.
'
' ***
' Ce programme supprime tous les répertoires vides et tous les fichiers avec
plus de 30 jours par rapport à leur dernière modofication.
' La variable "DELAI" définie le nombre la période de validité des fichiers.
' La variable "pfad" définie le chemin du réperoire traité.
' ***

Option Explicit

' Répertoire de traitement
Const pfad = "d:\test_clean_space\apres"
Const DELAI = 30

' Variables
Dim Text, Title, index, Txt()
Dim fso, wsh, i

index = 1

Set wsh = WScript.CreateObject ("WScript.Shell") ' Creation d'un nouveau
script VBS

Set fso = WScript.CreateObject("Scripting.FileSystemObject") ' Creation
d'un nouveau FileSystemObject-Object utilise pour l'acces aux fichiers

RecFolder index, wsh.ExpandEnvironmentStrings(pfad) ' Acquisition de la
collection de repertoires

Function RecFolder (idx, pfad) ' Fonction principale du programme

Dim fo, fc, i, colFiles, file ' Definition des variables locales

Set fo = fso.GetFolder(pfad) ' Definition des objets system
Set fc = fo.SubFolders
Set colFiles = fo.Files

For Each file in colFiles ' Test chaque fichier du repertoire cible
If DateDiff("d", file.DateLastModified, Now)>DELAI Then ' afin de
savoir si celui-ci a sa date de validite
file.delete(True) ' expiree
End if
Next

For Each i in fc ' Boucle de recherche de sous-repertoires
Call RecFolder (idx+1, pfad + "\" + i.name) ' Re-indexation de l'objet
system "fo"

If i.Files.Count = 0 And i.SubFolders.Count = 0 Then ' Test si le
repertoire est vide afin de le supprimer
fso.DeleteFolder(pfad + "\" + i.name)
End if
Next

Set fo = Nothing ' release objects
Set fc = Nothing
Set colFiles = Nothing

End Function

10 réponses

Avatar
toon
Sur le message d'erreur j'ai une erreur sur la ligne 51 caractere 4.
Ca doit correspondre a "fso.DeleteFolder(pfad + "" + i.name)"

Je ne sais vraiment pas trop ou chercher, si quelqu'un a une idee je suis
preneur !!!

Bonjour.

J'essai d'executer un programme vbs afin que celui-ci me supprime les
fichiers datant de plus de 30 jours. En effet, sur mon reseau, j'ai mis en
place un espace temporaire d'echange de fichier, mais etant donne que
personne ne fait le menage apres, et bien je suis oblige de le faire moi
meme, d'ou le script ci-dessous de nettoyage automatique.
Ca marche, mais lorsque je le planifie dans une tache planifie avec un
compte administrateur en plus, ca ne marche pas car il me dit que je n'ai
pas les droits.

Ou je dois chercher ???


Script ...
'
' clean_space.vbs - v1.0
'
' Programme de nettoyage automatique d'un repertoire.
' Initialement prévu pour la zone d'échange temporaire de la ressource de
cluster COMMUN1.
'
' ***
' Ce programme supprime tous les répertoires vides et tous les fichiers
avec

plus de 30 jours par rapport à leur dernière modofication.
' La variable "DELAI" définie le nombre la période de validité des
fichiers.

' La variable "pfad" définie le chemin du réperoire traité.
' ***

Option Explicit

' Répertoire de traitement
Const pfad = "d:test_clean_spaceapres"
Const DELAI = 30

' Variables
Dim Text, Title, index, Txt()
Dim fso, wsh, i

index = 1

Set wsh = WScript.CreateObject ("WScript.Shell") ' Creation d'un
nouveau

script VBS

Set fso = WScript.CreateObject("Scripting.FileSystemObject") ' Creation
d'un nouveau FileSystemObject-Object utilise pour l'acces aux fichiers

RecFolder index, wsh.ExpandEnvironmentStrings(pfad) ' Acquisition de
la

collection de repertoires

Function RecFolder (idx, pfad) ' Fonction principale du programme

Dim fo, fc, i, colFiles, file ' Definition des variables locales

Set fo = fso.GetFolder(pfad) ' Definition des objets system
Set fc = fo.SubFolders
Set colFiles = fo.Files

For Each file in colFiles ' Test chaque fichier du repertoire cible
If DateDiff("d", file.DateLastModified, Now)>DELAI Then ' afin de
savoir si celui-ci a sa date de validite
file.delete(True) ' expiree
End if
Next

For Each i in fc ' Boucle de recherche de sous-repertoires
Call RecFolder (idx+1, pfad + "" + i.name) ' Re-indexation de
l'objet

system "fo"

If i.Files.Count = 0 And i.SubFolders.Count = 0 Then ' Test si le
repertoire est vide afin de le supprimer
fso.DeleteFolder(pfad + "" + i.name)
End if
Next

Set fo = Nothing ' release objects
Set fc = Nothing
Set colFiles = Nothing

End Function




Avatar
toon
Je me suis trompe de ligne desole. Message d'erreur exact:

Script : C:batchclean_space.vbs
Ligne : 53
Caract. : 4
Erreur : Permission refusée
Code : 800A0046
Source : Erreur d'execution Microsoft VBScript

Sur le message d'erreur j'ai une erreur sur la ligne 51 caractere 4.
Ca doit correspondre a "fso.DeleteFolder(pfad + "" + i.name)"

Je ne sais vraiment pas trop ou chercher, si quelqu'un a une idee je suis
preneur !!!

Bonjour.

J'essai d'executer un programme vbs afin que celui-ci me supprime les
fichiers datant de plus de 30 jours. En effet, sur mon reseau, j'ai mis
en


place un espace temporaire d'echange de fichier, mais etant donne que
personne ne fait le menage apres, et bien je suis oblige de le faire moi
meme, d'ou le script ci-dessous de nettoyage automatique.
Ca marche, mais lorsque je le planifie dans une tache planifie avec un
compte administrateur en plus, ca ne marche pas car il me dit que je
n'ai


pas les droits.

Ou je dois chercher ???


Script ...
'
' clean_space.vbs - v1.0
'
' Programme de nettoyage automatique d'un repertoire.
' Initialement prévu pour la zone d'échange temporaire de la ressource
de


cluster COMMUN1.
'
' ***
' Ce programme supprime tous les répertoires vides et tous les fichiers
avec

plus de 30 jours par rapport à leur dernière modofication.
' La variable "DELAI" définie le nombre la période de validité des
fichiers.

' La variable "pfad" définie le chemin du réperoire traité.
' ***

Option Explicit

' Répertoire de traitement
Const pfad = "d:test_clean_spaceapres"
Const DELAI = 30

' Variables
Dim Text, Title, index, Txt()
Dim fso, wsh, i

index = 1

Set wsh = WScript.CreateObject ("WScript.Shell") ' Creation d'un
nouveau

script VBS

Set fso = WScript.CreateObject("Scripting.FileSystemObject") '
Creation


d'un nouveau FileSystemObject-Object utilise pour l'acces aux fichiers

RecFolder index, wsh.ExpandEnvironmentStrings(pfad) ' Acquisition
de


la
collection de repertoires

Function RecFolder (idx, pfad) ' Fonction principale du programme

Dim fo, fc, i, colFiles, file ' Definition des variables locales

Set fo = fso.GetFolder(pfad) ' Definition des objets system
Set fc = fo.SubFolders
Set colFiles = fo.Files

For Each file in colFiles ' Test chaque fichier du repertoire
cible


If DateDiff("d", file.DateLastModified, Now)>DELAI Then ' afin de
savoir si celui-ci a sa date de validite
file.delete(True) ' expiree
End if
Next

For Each i in fc ' Boucle de recherche de
sous-repertoires


Call RecFolder (idx+1, pfad + "" + i.name) ' Re-indexation de
l'objet

system "fo"

If i.Files.Count = 0 And i.SubFolders.Count = 0 Then ' Test si le
repertoire est vide afin de le supprimer
fso.DeleteFolder(pfad + "" + i.name)
End if
Next

Set fo = Nothing ' release objects
Set fc = Nothing
Set colFiles = Nothing

End Function








Avatar
Julien Malghem [MVP]
Bonjour,

As-tu vérifié que ton compte administrateur avait le droits (NTFS) de
supprimer le fichier sur lequel il plante ?

A+
Julien

"toon" a écrit dans le message de news:

Je me suis trompe de ligne desole. Message d'erreur exact:

Script : C:batchclean_space.vbs
Ligne : 53
Caract. : 4
Erreur : Permission refusée
Code : 800A0046
Source : Erreur d'execution Microsoft VBScript


Avatar
toon
Oui !!!

J'ai meme mis l'administrateur sur le repertoire parent avec "control total"
avec "appliquer a tout les sous repertoires".

"Julien Malghem [MVP]" a écrit dans le message de
news: uzlv2#
Bonjour,

As-tu vérifié que ton compte administrateur avait le droits (NTFS) de
supprimer le fichier sur lequel il plante ?

A+
Julien

"toon" a écrit dans le message de news:

Je me suis trompe de ligne desole. Message d'erreur exact:

Script : C:batchclean_space.vbs
Ligne : 53
Caract. : 4
Erreur : Permission refusée
Code : 800A0046
Source : Erreur d'execution Microsoft VBScript






Avatar
Julien Malghem [MVP]
Le fichier ne serait-il pas ouvert ?

On va chercher partout ;-)

"toon" a écrit dans le message de news:
%
Oui !!!

J'ai meme mis l'administrateur sur le repertoire parent avec "control
total"
avec "appliquer a tout les sous repertoires".

"Julien Malghem [MVP]" a écrit dans le message
de
news: uzlv2#
Bonjour,

As-tu vérifié que ton compte administrateur avait le droits (NTFS) de
supprimer le fichier sur lequel il plante ?

A+
Julien

"toon" a écrit dans le message de news:

Je me suis trompe de ligne desole. Message d'erreur exact:

Script : C:batchclean_space.vbs
Ligne : 53
Caract. : 4
Erreur : Permission refusée
Code : 800A0046
Source : Erreur d'execution Microsoft VBScript










Avatar
toon
Non, j'ai rien d'ouvert !!!
J'ai deja regarde dans ce sens ;- )

Merci d'avance pour vos recherches ;- )

"Julien Malghem [MVP]" a écrit dans le message de
news:
Le fichier ne serait-il pas ouvert ?

On va chercher partout ;-)

"toon" a écrit dans le message de news:
%
Oui !!!

J'ai meme mis l'administrateur sur le repertoire parent avec "control
total"
avec "appliquer a tout les sous repertoires".

"Julien Malghem [MVP]" a écrit dans le message
de
news: uzlv2#
Bonjour,

As-tu vérifié que ton compte administrateur avait le droits (NTFS) de
supprimer le fichier sur lequel il plante ?

A+
Julien

"toon" a écrit dans le message de news:

Je me suis trompe de ligne desole. Message d'erreur exact:

Script : C:batchclean_space.vbs
Ligne : 53
Caract. : 4
Erreur : Permission refusée
Code : 800A0046
Source : Erreur d'execution Microsoft VBScript














Avatar
~Jean-Marc~ [MVP]
Salutations *toon* !
Dans <news:%
tu nous disais :
Sur le message d'erreur j'ai une erreur sur la ligne 51 caractere 4.
Ca doit correspondre a "fso.DeleteFolder(pfad + "" + i.name)"


Pour concaténer, je préfère utiliser "&".

Je suppose que tu as essayé un :
fso.DeleteFolder(pfad & "" & i.name, true)

Tu devrais essayer de voir en ajoutant du code de deboguage
(a l'arrache dans le mail, sans test :-P )

On error resume next
fso.DeleteFolder(pfad & "" & i.name, true)
if err then MsgBox "Erreur " & err.number & " ==> " & pfad & "" & i.name & _
VbCrLf & err.description
err.clear
[bla bla bla]
on error goto 0

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/

Avatar
toon
Salutations *toon* !
Dans <news:%
tu nous disais :
Sur le message d'erreur j'ai une erreur sur la ligne 51 caractere 4.
Ca doit correspondre a "fso.DeleteFolder(pfad + "" + i.name)"



Exact !!!

Pour concaténer, je préfère utiliser "&".


Oui, ben je crois que je vais l'utiliser aussi desormais !!!

Je suppose que tu as essayé un :
fso.DeleteFolder(pfad & "" & i.name, true)


",true" ne fonctionne pas. J'ai un message d'erreur qui me parle de
parenthese et de fonction "sub".

Tu devrais essayer de voir en ajoutant du code de deboguage
(a l'arrache dans le mail, sans test :-P )


Oui, je vais ca.
Mais c'est marrant quand meme, parce que mon script plante toujours sur le
meme repertoire.
J'ai mis un wscript.echo juste avant la commande delete, et j'observe bin
qu'il commence a supprimer des repertoires + fichiers jusqu'a un certain
endroit, puis il s'arrete. J'ai verifier les proprietes NTFS, normal. Le nom
du repertoire comporte plusieur espaces, je ne sais pas si ca peut jouer.

Si j'utilise mon programme sans faire la recherche de repertoire vide a
supprimer, le programme s'execute tres bien (sauf que j'ai une arborescence
vide qui reste presente).

On error resume next
fso.DeleteFolder(pfad & "" & i.name, true)
if err then MsgBox "Erreur " & err.number & " ==> " & pfad & "" & i.name
& _

VbCrLf & err.description
err.clear
[bla bla bla]
on error goto 0

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/




Avatar
~Jean-Marc~ [MVP]
Salutations *toon* !
Dans <news:eXV%
tu nous disais :
Je suppose que tu as essayé un :
fso.DeleteFolder(pfad & "" & i.name, true)


",true" ne fonctionne pas. J'ai un message d'erreur qui me parle de
parenthese et de fonction "sub".


Ah oui, exact. Fais plutôt :
fso.DeleteFolder pfad & "" & i.name, true

Le nom du repertoire comporte plusieur espaces, je ne sais
pas si ca peut jouer.


ça devrait pas...

Pas d'autre idée pour le moment...

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/


Avatar
toon
Exact ca marche mieux !!!
Faut que je fasse des tests plus approfondis avec beaucoup plus de data dans
le repertoire nettoye, mais j'ai pas super le temps aujourd'hui.
Je regarde de mon cote, et je tiens au courant !!!

"~Jean-Marc~ [MVP]" a écrit dans le message de
news: eLg8j#
Salutations *toon* !
Dans <news:eXV%
tu nous disais :
Je suppose que tu as essayé un :
fso.DeleteFolder(pfad & "" & i.name, true)


",true" ne fonctionne pas. J'ai un message d'erreur qui me parle de
parenthese et de fonction "sub".


Ah oui, exact. Fais plutôt :
fso.DeleteFolder pfad & "" & i.name, true

Le nom du repertoire comporte plusieur espaces, je ne sais
pas si ca peut jouer.


ça devrait pas...

Pas d'autre idée pour le moment...

@+

--
~Jean-Marc~ MSAE & MVP Windows XP Fr
M'écrire : http://msmvps.com/docxp/contact.aspx" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://msmvps.com/docxp/contact.aspx
- http://docxp.mvps.org - http://msmvps.com/docxp/ -
Aide en DIRECT sur Internet : http://communautes-ms.akro-net.org/