IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Effacement de dossiers et fichiers


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    PLM IT Consultant
    Inscrit en
    Novembre 2003
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : PLM IT Consultant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 202
    Par défaut Effacement de dossiers et fichiers
    Bonjour,

    je suis novice en vbscript et j'ai très peu de temps pour améliorer mon script.

    Mon besoin: Avoir un script qui efface tous les fichiers qui sont plus vieux que 15 jours et effacer leur dossier si ces derniers sont vides. Il y a une condition à respecter, certains dossiers ne doivent pas être supprimés. (Ceux de la racine).

    Les dossiers à ne pas supprimés:
    Achat
    Vente
    R&D

    Mon problème:
    Avec mon script, les fichiers s'effacent et les dossiers vide également sauf si ces dossiers se trouvent dans un répertoire à ne pas supprimer.

    Mon script actuel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    on error resume next
     
    'Déclaration de variables
    Dim folder
    dim Subfolder
    dim path
    Dim FSO
    Dim B
     
    'Création de l'objet
    Set FSO = CreateObject("Scripting.FileSystemObject")
     
    'Chemin du Temp
    path = "\\chczabf0001\Data\Commun\Temp\Achats"
     
    'Appel de la fonction recurcive avec comme argument le chemin du repertoire racine
    recurcive path
     
    'Fonction récurcive pour traiter tout l'arboresence des dossiers
    function recurcive(chemin) 
    	set folder = FSO.GetFolder (chemin) 'Utilisation du FSO pour prendre le dossier racine
    	set Subfolder = folder.SubFolders 'Définition de la varibale pour les S/dossiers
    	for each A in Subfolder 'pour chaque dossier dans le sous dossier racine
    		Set fic = A.Files 'definition de la variables toucher les fichier des dossier
    		fichier fic 'appel de la fontion fichier
    		recurcive A 're-appel de la fonction recurcive pour traiter les S/dossiers
    	next
    end function
     
    function fichier(fic) 'fonction qui traite les fichiers dans les dossiers A
    	For Each objFile in fic 'pour chaque fichier dans dossiers de fichier
    		Set f = fso.GetFile(objfile) 'utilisation du FSO pour prendre le fichier
    		If DateDiff("D", objfile.DateLastModified, now) > 15 Then 'si la derniére modification du fichier est plus ancienne que X jours
    			'msgbox objfile & " a suprimer" 'alors effacer le fichier avec option de forcer pour les fichier en lecture seule FSO.DeleteFile f, force = yes
    			FSO.DeleteFile f
    		'end if 'fin du SI
    		next
    	end function 'fin de la fonction
     
    Set fic = folder.Files
    fichier fic
     
    set folder = FSO.GetFolder (path)'utilisation du FSO pour prendre le dossier
    	For Each B in folder.subfolders 'pour chaque dossier dans le dossier racine
    		If B.size = 0 Then 'si la taille du dossier est egal a 0 (donc vide)
    		'msgbox B & B.size 'effacer le dossier
    		FSO.DeleteFolder B, force = yes
    		End If 'fin du SI
    	Next
    2ème requête:
    Est-il possible de supprimer un dossier qui ne se trouve pas à la racine mais qui porte le même nom qu'un dossier que l'on ne veut pas supprimer?

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 131
    Par défaut
    Salut

    Citation Envoyé par 2ème requête:
    Est-il possible de supprimer un dossier qui ne se trouve pas à la racine mais qui porte le même nom qu'un dossier que l'on ne veut pas supprimer?
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre confirmé
    Homme Profil pro
    PLM IT Consultant
    Inscrit en
    Novembre 2003
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : PLM IT Consultant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 202
    Par défaut
    Bon a force de chercher, j'ai trouvé toutes mes solutions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Efface les sous-dossiers si ils sont vide
    For each subfold in FSO.GetFolder(path).SubFolders 'Pour chaque sous-dossiers dans le path
    	subpath = "C:\vbscript\temp\" & subfold.Name 'On définit une nouvelle variable avec le nom des sous-dossiers au 1er niveau
    	set folder = FSO.GetFolder (subpath)'utilisation du FSO pour prendre le dossier
    	For Each B in folder.subfolders 'pour chaque dossier dans le sous-dossier racine
    		If B.size = 0 Then 'si la taille du dossier est egal a 0 (donc vide)
    		'msgbox B & B.size 'effacer le dossier
    		FSO.DeleteFolder B, force = yes
    		End If 'fin du SI
    	Next 
    Next
    Cette partie de commande permet de lister dans un dossier, les sous-dossier du 1er niveau. Par la suite, cela va effacer tous les dossiers vide dans ces sous-dossier du 1er niveau.

    Bonne journàe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/10/2009, 14h06
  2. [VBA-A]Parcours d'une arborescence dossiers et fichiers
    Par sidneyvba dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2006, 16h58
  3. dossier ou fichier?
    Par Biosox dans le forum C++
    Réponses: 2
    Dernier message: 06/10/2005, 14h41
  4. [langage] effacer un dossier
    Par cedpig dans le forum Langage
    Réponses: 7
    Dernier message: 07/05/2004, 11h39
  5. Dossier ou Fichier avec ShellListView
    Par MoussDiouf dans le forum Langage
    Réponses: 6
    Dernier message: 14/06/2003, 12h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo