FORUMS PROFESSIONNELS
WINDEV
,
WEBDEV
et
WINDEV Mobile
Accueil
|
Messages récents
|
Connexion
|
Déconnexion
|
Français
Accueil
→
WINDEV 2024
→
Suppression des répertoires et sous-répertoires vides sauf ceux situés à la racine du répertoire parent
Suppression des répertoires et sous-répertoires vides sauf ceux situés à la racine du répertoire parent
Débuté par HevaDev, 16 oct. 2020 13:59 - 2 réponses
Connectez-vous…
HevaDev
#1
Posté le 16 octobre 2020 - 13:59
Bonjour,
J'ai développé une procédure qui consiste à supprimer tous les répertoires et sous-répertoires vides situés à un emplacement réseau précis en utilisant les fonctions WD Langage.
SI PAS DE FICHIERS DANS LES REPERTOIRES ET SOUS REPERTOIRES==> SUPPRESSION DES REPERTOIRES ET SOUS REPERTOIRES.
Objectif : NE PAS supprimer les répertoires situés à la racine de O:\Echanges\Toto\ même s'ils sont vides.
Il s'agit de répertoires nominatif portant le nom d'utilisateurs, il ne faut pas qu'ils aient à re-créer systématiquement leur répertoire portant leur nom.
Exemple : Le parcours doit être récursif et doit s'arrêter à la racine de O:\Echanges\Dupont Alain\ même si ce répertoire est VIDE . Le parcours récursif ne doit aller jusqu'à O:\Echanges\ car cela supprime tous les répertoires vides nominatifs.
Voici le code ma procédure:
PROCEDURE SupprimerRepVides(sRep est une chaîne)
sListeRep est une chaîne UNICODE
sFichiers est une chaîne UNICODE
//Récupération liste des répertoires
sListeRep = fListeRépertoire(ComplèteRep(sRep),frRécursif + fCheminUNICODE)
//Récupération liste des fichiers
sFichiers = fListeFichier(ComplèteRep(sRep)+ "\*.*",frRécursif + fCheminUNICODE)
POUR TOUTE CHAÎNE sRep DE sListeRep SEPAREE PAR RC
SI fFichierExiste(sFichiers) = Faux ALORS
SI fRepSupprime(sRep,frRécursif + frLectureSeule) ALORS
// générer fichier de logs
gclLoggueur.Type = Loggueur.cst_type_log_info
gclLoggueur.Message = "Le répertoire " + sRep + " a été supprimé avec succès."
gclLoggueur.EcritFichier()
SINON
gclLoggueur.Type = Loggueur.cst_type_log_erreur
gclLoggueur.Message = "Le répertoire " + sRep + " ne peut être supprimé car il contient des fichiers"
gclLoggueur.Message += RC + ErreurInfo(errMessage)
gclLoggueur.EcritFichier()
FIN
FIN
FIN
Je vous remercie d'avance pour votre aide.
Heva
Signaler
0
0
Daryl
#2
Membre enregistré
1 304 messages
Popularité : +47 (51 votes)
Posté le 19 octobre 2020 - 13:03
Salut HevaDev,
Tu dois faire attention à la manière d'utiliser tes variables, c'est une très mauvaise idée d'utiliser un paramètre comme une nouvelle variable (sRep) et certainement quand elle est passée par adresse.
Puisque tu demande la suppression du répertoire de manière récursive, la liste de fichiers ne sert à rien dans ta procédure, mais il faut l'utiliser à la fin pour supprimer les fichiers du répertoire.
Procedure
SupprimerRepVides
(
LOCAL
s
RepAVider
est une chaîne UNICODE
)
s
ListeRep
est une chaîne UNICODE
s
Rep
est une chaîne UNICODE
//Récupération liste des répertoires
s
ListeRep
=
fListeRépertoire
(
ComplèteRep
(
s
RepAVider
)
,
frRécursif
+
fCheminUNICODE
)
// Traitement du répertoire à vider
POUR TOUTE
chaîne
s
Rep
de
s
ListeRep
SEPAREE PAR
RC
// On ne supprime pas le répertoire donné en paramètre, mais uniquement les répertoires en dessous du répertoire à supprimer
SI
s
Rep
<
>
s
RepAVider
ALORS
SI
fRepSupprime
(
s
Rep
,
frRécursif
+
frLectureSeule
)
ALORS
// générer fichier de logs
gcl
Loggueur.Type
=
Loggueur.cst_type_log_info
gcl
Loggueur.Message
=
"Le répertoire '[%sRep%]' a été supprimé avec succès."
SINON
gcl
Loggueur.Type
=
Loggueur.cst_type_log_erreur
gcl
Loggueur.Message
=
"Le répertoire '[%sRep%]' ne peut être supprimé car il contient toujours des fichiers"
gcl
Loggueur.Message
+
=
RC
+
ErreurInfo
(
errMessage
)
FIN
// Ecriture dans les logs
gcl
Loggueur.EcritFichier
(
)
FIN
FIN
// On termine par supprimer uniquement les fichiers du répertoire donné en paramètre
fSupprime
(
ComplèteRep
(
s
RepAVider
) +
"*.*"
,
frLectureSeule
)
Bon dev
A+
Daryl
Signaler
0
0
HevaDev
#3
Posté le 22 octobre 2020 - 11:48
Bonjour Daryl,
Merci pour ton aide, je vais tester ta correction.
Je prends bien note du conseil en terme de bonne pratique quant au passage de nouvelle variable en paramètre.
Heva
Signaler
0
0
→ Revenir à WINDEV 2024
WINDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (précédentes versions)
WEBDEV (précédentes versions)
WINDEV Mobile (précédentes versions)
Etats & Requêtes
Hors-sujet
Outils
Français
English
Español
Portuguesa
Fermer cette fenêtre
Type de recherche
Uniquement les sujets
Tous les messages
Période de recherche
Date indifférente
Moins d'une heure
Moins de 24 heures
Moins d'une semaine
Moins d'un mois
Moins d'un an
Annuler
Aperçu de votre message
Ajouter une image
Importer une image depuis une URL
Envoyer une image depuis un fichier de votre disque
Déposez ici un fichier ou cliquez sur "Parcourir..."
ou
Annuler
0%
WLangage
SQL
XML, HTML
JAVA, Javascript
Texte