Nettoyage automatique des répertoires utilisateurs
10 réponses
Pierre-Yves
Bonjour à tous,
Je désire automatiser le nettoyage de tous les répertoires utilisateurs.
L'idée est d'exécuter un script vbs périodiquement via le gestionnaire de
tâche.
Le script doit supprimer tous les fichiers comportant les extention *.tmp,
et ~*.* qui se trouvent dans tous les répertoires et sous-répertoires de
chaque utilisateur.
Quelqu'un aurait-il un d'un tel script à proposer ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gilles LAURENT [MVP]
"Pierre-Yves" wrote:
Bonjour à tous,
Bonjour,
Je désire automatiser le nettoyage de tous les répertoires utilisateurs. L'idée est d'exécuter un script vbs périodiquement via le gestionnaire de tâche. Le script doit supprimer tous les fichiers comportant les extention *.tmp, et ~*.* qui se trouvent dans tous les répertoires et sous-répertoires de chaque utilisateur. Quelqu'un aurait-il un d'un tel script à proposer ?
Cette action peut facilement être réalisée en batch. Le script ci-dessous permet de supprimer les fichiers spécifiés du répertoire (profil) de l'utilisateur courant. Ce script pourrait être exécuté, par exemple, à chaque ouverture / fermeture de session via un script de logon / GPO.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"Pierre-Yves" wrote:
Bonjour à tous,
Bonjour,
Je désire automatiser le nettoyage de tous les répertoires utilisateurs.
L'idée est d'exécuter un script vbs périodiquement via le gestionnaire de
tâche.
Le script doit supprimer tous les fichiers comportant les extention *.tmp,
et ~*.* qui se trouvent dans tous les répertoires et sous-répertoires de
chaque utilisateur.
Quelqu'un aurait-il un d'un tel script à proposer ?
Cette action peut facilement être réalisée en batch. Le script ci-dessous
permet de supprimer les fichiers spécifiés du répertoire (profil) de
l'utilisateur courant. Ce script pourrait être exécuté, par exemple, à chaque
ouverture / fermeture de session via un script de logon / GPO.
Je désire automatiser le nettoyage de tous les répertoires utilisateurs. L'idée est d'exécuter un script vbs périodiquement via le gestionnaire de tâche. Le script doit supprimer tous les fichiers comportant les extention *.tmp, et ~*.* qui se trouvent dans tous les répertoires et sous-répertoires de chaque utilisateur. Quelqu'un aurait-il un d'un tel script à proposer ?
Cette action peut facilement être réalisée en batch. Le script ci-dessous permet de supprimer les fichiers spécifiés du répertoire (profil) de l'utilisateur courant. Ce script pourrait être exécuté, par exemple, à chaque ouverture / fermeture de session via un script de logon / GPO.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
Pierre-Yves
Bonjour Gilles,
La solution est intéressante du point de vue simplicité. Je la garde bien au chaud si besoin mais dans le cas qui m'intéresse, je ne souhaite pas le faire via logon script, en effet les répertoires utilisateurs sont sur un serveur et je souhaite limiter le trafic réseau entre les stations de travail et ce serveur.
Auriez-vous une solution avec un script VBS qui tournerait sur le serveur ?
Merci beaucoup Pierre-Yves
"Gilles LAURENT [MVP]" a écrit dans le message de news:
"Pierre-Yves" wrote:
Bonjour à tous,
Bonjour,
Je désire automatiser le nettoyage de tous les répertoires utilisateurs. L'idée est d'exécuter un script vbs périodiquement via le gestionnaire de tâche. Le script doit supprimer tous les fichiers comportant les extention *.tmp, et ~*.* qui se trouvent dans tous les répertoires et sous-répertoires de chaque utilisateur. Quelqu'un aurait-il un d'un tel script à proposer ?
Cette action peut facilement être réalisée en batch. Le script ci-dessous permet de supprimer les fichiers spécifiés du répertoire (profil) de l'utilisateur courant. Ce script pourrait être exécuté, par exemple, à chaque ouverture / fermeture de session via un script de logon / GPO.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
Bonjour Gilles,
La solution est intéressante du point de vue simplicité. Je la garde bien au
chaud si besoin mais dans le cas qui m'intéresse, je ne souhaite pas le
faire via logon script, en effet les répertoires utilisateurs sont sur un
serveur et je souhaite limiter le trafic réseau entre les stations de
travail et ce serveur.
Auriez-vous une solution avec un script VBS qui tournerait sur le serveur ?
Merci beaucoup
Pierre-Yves
"Gilles LAURENT [MVP]" <glsft@free.fr> a écrit dans le message de news:
64EEF3FE-1F7B-4DE1-B790-448231248B8F@microsoft.com...
"Pierre-Yves" wrote:
Bonjour à tous,
Bonjour,
Je désire automatiser le nettoyage de tous les répertoires utilisateurs.
L'idée est d'exécuter un script vbs périodiquement via le gestionnaire de
tâche.
Le script doit supprimer tous les fichiers comportant les extention
*.tmp,
et ~*.* qui se trouvent dans tous les répertoires et sous-répertoires de
chaque utilisateur.
Quelqu'un aurait-il un d'un tel script à proposer ?
Cette action peut facilement être réalisée en batch. Le script ci-dessous
permet de supprimer les fichiers spécifiés du répertoire (profil) de
l'utilisateur courant. Ce script pourrait être exécuté, par exemple, à
chaque
ouverture / fermeture de session via un script de logon / GPO.
La solution est intéressante du point de vue simplicité. Je la garde bien au chaud si besoin mais dans le cas qui m'intéresse, je ne souhaite pas le faire via logon script, en effet les répertoires utilisateurs sont sur un serveur et je souhaite limiter le trafic réseau entre les stations de travail et ce serveur.
Auriez-vous une solution avec un script VBS qui tournerait sur le serveur ?
Merci beaucoup Pierre-Yves
"Gilles LAURENT [MVP]" a écrit dans le message de news:
"Pierre-Yves" wrote:
Bonjour à tous,
Bonjour,
Je désire automatiser le nettoyage de tous les répertoires utilisateurs. L'idée est d'exécuter un script vbs périodiquement via le gestionnaire de tâche. Le script doit supprimer tous les fichiers comportant les extention *.tmp, et ~*.* qui se trouvent dans tous les répertoires et sous-répertoires de chaque utilisateur. Quelqu'un aurait-il un d'un tel script à proposer ?
Cette action peut facilement être réalisée en batch. Le script ci-dessous permet de supprimer les fichiers spécifiés du répertoire (profil) de l'utilisateur courant. Ce script pourrait être exécuté, par exemple, à chaque ouverture / fermeture de session via un script de logon / GPO.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
Gilles LAURENT [MVP]
"Pierre-Yves" wrote:
Bonjour Gilles,
Pierre-Yves,
La solution est intéressante du point de vue simplicité. Je la garde bien au chaud si besoin mais dans le cas qui m'intéresse, je ne souhaite pas le faire via logon script, en effet les répertoires utilisateurs sont sur un serveur et je souhaite limiter le trafic réseau entre les stations de travail et ce serveur.
Auriez-vous une solution avec un script VBS qui tournerait sur le serveur ?
Ci-dessous le script VBScript CleanUp.vbs permettant de supprimer les fichiers vérifiant les critères spécifiés dans la variable de type tableau arrPattern. Je suppose ici que les répertoires utilisateurs se situent tous au même niveau dans la structrure de répertoires du serveur de fichiers. Le script doit donc être déposé dans le dossier racine contenant tous les dossiers utilisateurs.
Usage : CleanUp.vbs /whatif:<True|False>
Note: l'argument /whatif permet de simuler la suppression des fichiers si celui-ci est fixé à True, sinon les fichiers sont effectivement supprimés. Pour la génération d'un fichier log, il suffira de rediriger le flux stdout vers un fichier via l'opérateur de redirection ">"
Set m_oFs=CreateObject("Scripting.FileSystemObject") Set m_oRe=New RegExp: m_oRe.IgnoreCase=True For nIdx=0 To UBound(arrPattern) m_oRe.Pattern=m_oRe.Pattern & "^" & arrPattern(nIdx) & "$" m_oRe.Pattern=m_oRe.Pattern & "|" Next m_oRe.Pattern=Replace(m_oRe.Pattern, ".",".") m_oRe.Pattern=Replace(m_oRe.Pattern, "*",".*") m_oRe.Pattern=Left(m_oRe.Pattern, Len(m_oRe.Pattern) - 1)
sCurrentDirectory=m_oFs.GetParentFolderName(WScript.ScriptFullName) Set oRootFolder=m_oFs.GetFolder(sCurrentDirectory) CleanUp oRootFolder, CBool(WScript.Arguments.Named("whatif"))
Sub CleanUp(oFolder, bWhatIf) On Error Resume Next For Each oSubFolder In oFolder.SubFolders For Each oFile In oSubFolder.Files If Err.Number=0 Then If m_oRe.Test(oFile.Name) Then WScript.Echo _ oFile.Path & " deleted ..." & _ " (" & CStr(Not bWhatIf) & ")" If Not bWhatIf Then oFile.Delete(True) End If End If Next CleanUp oSubFolder, bWhatIf Next On Error Goto 0 End Sub --- Coupez ici : CleanUp.vbs ---
Tenez-nous au courant.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"Pierre-Yves" wrote:
Bonjour Gilles,
Pierre-Yves,
La solution est intéressante du point de vue simplicité. Je la garde bien au
chaud si besoin mais dans le cas qui m'intéresse, je ne souhaite pas le
faire via logon script, en effet les répertoires utilisateurs sont sur un
serveur et je souhaite limiter le trafic réseau entre les stations de
travail et ce serveur.
Auriez-vous une solution avec un script VBS qui tournerait sur le serveur ?
Ci-dessous le script VBScript CleanUp.vbs permettant de supprimer les
fichiers vérifiant les critères spécifiés dans la variable de type tableau
arrPattern. Je suppose ici que les répertoires utilisateurs se situent tous
au même niveau dans la structrure de répertoires du serveur de fichiers. Le
script doit donc être déposé dans le dossier racine contenant tous les
dossiers utilisateurs.
Usage :
CleanUp.vbs /whatif:<True|False>
Note: l'argument /whatif permet de simuler la suppression des fichiers si
celui-ci est fixé à True, sinon les fichiers sont effectivement supprimés.
Pour la génération d'un fichier log, il suffira de rediriger le flux stdout
vers un fichier via l'opérateur de redirection ">"
Set m_oFs=CreateObject("Scripting.FileSystemObject")
Set m_oRe=New RegExp: m_oRe.IgnoreCase=True
For nIdx=0 To UBound(arrPattern)
m_oRe.Pattern=m_oRe.Pattern & "^" & arrPattern(nIdx) & "$"
m_oRe.Pattern=m_oRe.Pattern & "|"
Next
m_oRe.Pattern=Replace(m_oRe.Pattern, ".",".")
m_oRe.Pattern=Replace(m_oRe.Pattern, "*",".*")
m_oRe.Pattern=Left(m_oRe.Pattern, Len(m_oRe.Pattern) - 1)
sCurrentDirectory=m_oFs.GetParentFolderName(WScript.ScriptFullName)
Set oRootFolder=m_oFs.GetFolder(sCurrentDirectory)
CleanUp oRootFolder, CBool(WScript.Arguments.Named("whatif"))
Sub CleanUp(oFolder, bWhatIf)
On Error Resume Next
For Each oSubFolder In oFolder.SubFolders
For Each oFile In oSubFolder.Files
If Err.Number=0 Then
If m_oRe.Test(oFile.Name) Then
WScript.Echo _
oFile.Path & " deleted ..." & _
" (" & CStr(Not bWhatIf) & ")"
If Not bWhatIf Then oFile.Delete(True)
End If
End If
Next
CleanUp oSubFolder, bWhatIf
Next
On Error Goto 0
End Sub
--- Coupez ici : CleanUp.vbs ---
Tenez-nous au courant.
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
La solution est intéressante du point de vue simplicité. Je la garde bien au chaud si besoin mais dans le cas qui m'intéresse, je ne souhaite pas le faire via logon script, en effet les répertoires utilisateurs sont sur un serveur et je souhaite limiter le trafic réseau entre les stations de travail et ce serveur.
Auriez-vous une solution avec un script VBS qui tournerait sur le serveur ?
Ci-dessous le script VBScript CleanUp.vbs permettant de supprimer les fichiers vérifiant les critères spécifiés dans la variable de type tableau arrPattern. Je suppose ici que les répertoires utilisateurs se situent tous au même niveau dans la structrure de répertoires du serveur de fichiers. Le script doit donc être déposé dans le dossier racine contenant tous les dossiers utilisateurs.
Usage : CleanUp.vbs /whatif:<True|False>
Note: l'argument /whatif permet de simuler la suppression des fichiers si celui-ci est fixé à True, sinon les fichiers sont effectivement supprimés. Pour la génération d'un fichier log, il suffira de rediriger le flux stdout vers un fichier via l'opérateur de redirection ">"
Set m_oFs=CreateObject("Scripting.FileSystemObject") Set m_oRe=New RegExp: m_oRe.IgnoreCase=True For nIdx=0 To UBound(arrPattern) m_oRe.Pattern=m_oRe.Pattern & "^" & arrPattern(nIdx) & "$" m_oRe.Pattern=m_oRe.Pattern & "|" Next m_oRe.Pattern=Replace(m_oRe.Pattern, ".",".") m_oRe.Pattern=Replace(m_oRe.Pattern, "*",".*") m_oRe.Pattern=Left(m_oRe.Pattern, Len(m_oRe.Pattern) - 1)
sCurrentDirectory=m_oFs.GetParentFolderName(WScript.ScriptFullName) Set oRootFolder=m_oFs.GetFolder(sCurrentDirectory) CleanUp oRootFolder, CBool(WScript.Arguments.Named("whatif"))
Sub CleanUp(oFolder, bWhatIf) On Error Resume Next For Each oSubFolder In oFolder.SubFolders For Each oFile In oSubFolder.Files If Err.Number=0 Then If m_oRe.Test(oFile.Name) Then WScript.Echo _ oFile.Path & " deleted ..." & _ " (" & CStr(Not bWhatIf) & ")" If Not bWhatIf Then oFile.Delete(True) End If End If Next CleanUp oSubFolder, bWhatIf Next On Error Goto 0 End Sub --- Coupez ici : CleanUp.vbs ---
Tenez-nous au courant.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
moi
Bonsoir,
Un exemple d'utilisation d'Expressions Régulières est toujours bon à regarder ... donc j'ai ausculté ce script et fait qq tests.
Je me suis rendu compte à mes dépend que certains caractères valides pour un nom de fichier sont invalides dans une "expression régulière" ...
donc, j'ai tenté une modif ...(voir plus loin) Est-ce utile ? Est-ce bon ?
Par ailleurs CleanUp ne traite pas les fichiers situés à la racine du répertoire traité... c'est volontaire je présume ...
"moi" a écrit dans le message de news:OAMHPiL$ | Bonsoir,
Bonjour,
| Un exemple d'utilisation d'Expressions Régulières | est toujours bon à regarder ... donc j'ai ausculté ce script | et fait qq tests.
Bon début ;-)
| Je me suis rendu compte à mes dépend que certains caractères | valides pour un nom de fichier | sont invalides dans une "expression régulière" ...
Tout à fait !
| donc, j'ai tenté une modif ...(voir plus loin) | Est-ce utile ?
Oui uniquement si un pattern spécifié dans la variable de type tableau arrPattern contient des caractères spéciaux rentrant en conflit avec la syntaxe des expressions régulières.
| Est-ce bon ?
Oui ! Soit utiliser les codes ASCII ou alors le caractère d'échappement "" : x5E = ^ x24 = $ ...
| Par ailleurs | CleanUp ne traite pas les fichiers | situés à la racine du répertoire traité... | c'est volontaire je présume ...
Tout à fait. Je suis parti du principe que les répertoires utilisateurs se situent tous dans des sous-répertoires. Il y a donc une racine commune qui ne doit pas être traitée. C'est ce design que j'ai mis en oeuvre chez mes clients pour les répertoires personnels. J'espère qu'il en est de même chez Pierre-Yves !
Merci.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"moi" <moi@pas.la.ici> a écrit dans le message de
news:OAMHPiL$IHA.4156@TK2MSFTNGP02.phx.gbl
| Bonsoir,
Bonjour,
| Un exemple d'utilisation d'Expressions Régulières
| est toujours bon à regarder ... donc j'ai ausculté ce script
| et fait qq tests.
Bon début ;-)
| Je me suis rendu compte à mes dépend que certains caractères
| valides pour un nom de fichier
| sont invalides dans une "expression régulière" ...
Tout à fait !
| donc, j'ai tenté une modif ...(voir plus loin)
| Est-ce utile ?
Oui uniquement si un pattern spécifié dans la variable de type tableau
arrPattern contient des caractères spéciaux rentrant en conflit avec la
syntaxe des expressions régulières.
| Est-ce bon ?
Oui !
Soit utiliser les codes ASCII ou alors le caractère d'échappement "" :
x5E = ^
x24 = $
...
| Par ailleurs
| CleanUp ne traite pas les fichiers
| situés à la racine du répertoire traité...
| c'est volontaire je présume ...
Tout à fait. Je suis parti du principe que les répertoires utilisateurs
se situent tous dans des sous-répertoires. Il y a donc une racine
commune qui ne doit pas être traitée. C'est ce design que j'ai mis en
oeuvre chez mes clients pour les répertoires personnels. J'espère qu'il
en est de même chez Pierre-Yves !
Merci.
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
"moi" a écrit dans le message de news:OAMHPiL$ | Bonsoir,
Bonjour,
| Un exemple d'utilisation d'Expressions Régulières | est toujours bon à regarder ... donc j'ai ausculté ce script | et fait qq tests.
Bon début ;-)
| Je me suis rendu compte à mes dépend que certains caractères | valides pour un nom de fichier | sont invalides dans une "expression régulière" ...
Tout à fait !
| donc, j'ai tenté une modif ...(voir plus loin) | Est-ce utile ?
Oui uniquement si un pattern spécifié dans la variable de type tableau arrPattern contient des caractères spéciaux rentrant en conflit avec la syntaxe des expressions régulières.
| Est-ce bon ?
Oui ! Soit utiliser les codes ASCII ou alors le caractère d'échappement "" : x5E = ^ x24 = $ ...
| Par ailleurs | CleanUp ne traite pas les fichiers | situés à la racine du répertoire traité... | c'est volontaire je présume ...
Tout à fait. Je suis parti du principe que les répertoires utilisateurs se situent tous dans des sous-répertoires. Il y a donc une racine commune qui ne doit pas être traitée. C'est ce design que j'ai mis en oeuvre chez mes clients pour les répertoires personnels. J'espère qu'il en est de même chez Pierre-Yves !
Merci.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
moi
Bonjour,
Gilles LAURENT [MVP] wrote:
"moi" a écrit dans le message de news:OAMHPiL$
(...)
Bon début ;-) (...)
(...)
Tout à fait !(...)
(...)
Oui(...)
(...)
Oui !(...)
(...)
Tout à fait. (...)
me voilà très fier de moi :o))))
A+
HB
Bonjour,
Gilles LAURENT [MVP] wrote:
"moi" <moi@pas.la.ici> a écrit dans le message de
news:OAMHPiL$IHA.4156@TK2MSFTNGP02.phx.gbl
Y a-t-il une modification à apporter au script pour que cela fonctionne dans ce cas ?
Merci encore beaucoup de votre aide Pierre-Yves
Cela me semble "Gilles LAURENT [MVP]" a écrit dans le message de news: OFaTWlU$
"moi" a écrit dans le message de news:ek%23JI5S$ | Bonjour,
Bonjour,
[...] | me voilà très fier de moi :o))))
Je suis également fier de *moi*, euh ! de vous *moi* :-) Bref, *moi*, vous m'avez compris :-)
Bravo !
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
Gilles LAURENT [MVP]
"Pierre-Yves" a écrit dans le message de news: | Bonjour à Gilles et à moi,
Bonjour,
| La solution proposée correspond bien à ce que je cherche et j'aimerai | la tester ces prochains jours. | | les répertoires utilisateurs sont tous (à plat) sous la racine d'un | disque réseau comme l'exemple suivant | | servernamesharenameuser1 | servernamesharenameuser2 | ... etc | | Y a-t-il une modification à apporter au script pour que cela | fonctionne dans ce cas ?
Aucune modification à apporter. Il vous suffit de déposer le script VBScript CleanUp.vbs en local sur le serveur de fichiers dans le dossier pointé par le partage servernamesharename puis à planifier son exécution avec un compte utilisateur autorisé à parcourir les répertoires. Je vous invite dans un premier temps à réaliser vos tests de manière interactive en fixant le paramètre /whatif:True pour simuler les opérations et s'assurer que tout fonctionne correctement.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"Pierre-Yves" <pierre-yves.huguenin@swisscom.com> a écrit dans le
message de
news:1218640655.535053@ftpgate
| Bonjour à Gilles et à moi,
Bonjour,
| La solution proposée correspond bien à ce que je cherche et j'aimerai
| la tester ces prochains jours.
|
| les répertoires utilisateurs sont tous (à plat) sous la racine d'un
| disque réseau comme l'exemple suivant
|
| \servernamesharenameuser1
| \servernamesharenameuser2
| ... etc
|
| Y a-t-il une modification à apporter au script pour que cela
| fonctionne dans ce cas ?
Aucune modification à apporter. Il vous suffit de déposer le script
VBScript CleanUp.vbs en local sur le serveur de fichiers dans le dossier
pointé par le partage \servernamesharename puis à planifier son
exécution avec un compte utilisateur autorisé à parcourir les
répertoires. Je vous invite dans un premier temps à réaliser vos tests
de manière interactive en fixant le paramètre /whatif:True pour simuler
les opérations et s'assurer que tout fonctionne correctement.
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
"Pierre-Yves" a écrit dans le message de news: | Bonjour à Gilles et à moi,
Bonjour,
| La solution proposée correspond bien à ce que je cherche et j'aimerai | la tester ces prochains jours. | | les répertoires utilisateurs sont tous (à plat) sous la racine d'un | disque réseau comme l'exemple suivant | | servernamesharenameuser1 | servernamesharenameuser2 | ... etc | | Y a-t-il une modification à apporter au script pour que cela | fonctionne dans ce cas ?
Aucune modification à apporter. Il vous suffit de déposer le script VBScript CleanUp.vbs en local sur le serveur de fichiers dans le dossier pointé par le partage servernamesharename puis à planifier son exécution avec un compte utilisateur autorisé à parcourir les répertoires. Je vous invite dans un premier temps à réaliser vos tests de manière interactive en fixant le paramètre /whatif:True pour simuler les opérations et s'assurer que tout fonctionne correctement.
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
Gilles LAURENT [MVP]
"Mascaret" wrote:
Tu peux petit scarabée. Tu as affaire au Maître ! :-) :-)
Une nouvelle fois merci pour cette appréciation !
Note: Le petit scarabée deviendra grand !
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"Mascaret" wrote:
Tu peux petit scarabée. Tu as affaire au Maître ! :-) :-)
Une nouvelle fois merci pour cette appréciation !
Note: Le petit scarabée deviendra grand !
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr