FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Aide de PANORAMIC
Supression d'un répertoire Emptypar Marc Aujourd'hui à 16:05

» PANORAMIC V 1
Supression d'un répertoire Emptypar Klaus Aujourd'hui à 9:53

» Je teste PANORAMIC V 1 beta 1
Supression d'un répertoire Emptypar Klaus Aujourd'hui à 9:52

» bouton dans autre form que 0
Supression d'un répertoire Emptypar leclode Hier à 13:59

» KGF_dll - nouvelles versions
Supression d'un répertoire Emptypar Klaus Hier à 11:41

» Gestion d'un système client-serveur.
Supression d'un répertoire Emptypar Klaus Hier à 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Supression d'un répertoire Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Supression d'un répertoire Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Supression d'un répertoire Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Supression d'un répertoire Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Supression d'un répertoire Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Supression d'un répertoire Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Supression d'un répertoire Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Supression d'un répertoire Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Supression d'un répertoire Emptypar jjn4 Lun 22 Avr 2024 - 13:47

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Réassort du coffret Pokémon 151 ...
Voir le deal

 

 Supression d'un répertoire

Aller en bas 
+4
pan59
JL35
papydall
Nardo26
8 participants
AuteurMessage
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Supression d'un répertoire Empty
MessageSujet: Supression d'un répertoire   Supression d'un répertoire EmptyMar 27 Nov 2012 - 15:14

Bonjour,
Voici une petite procédure qui permet de détruire tout un dossier ainsi que ses sous-répertoires / fichiers...
La demo ci-dessous crée d'abord cette arborescence :
Code:
test
  |
  +-- dossier1
  |      |
  |      +-- dossier2
  |      |    |
  |      |    |-- texte1.txt
  |      |    |-- texte1.txt
  |      |   
  |      +-- dossier3
  |      |    |
  |      |    |-- texte1.txt
  |      |
  |      |-- texte1.txt
  |      |-- texte2.txt
  |
  |-- texte1.txt
puis l'appel à la procédure la détruit.

Code:
HIDE 0
APPLICATION_TITLE "Demo: Remove_Dir"

' Variables pour la démo
DIM Lecteur$:Lecteur$="D:\"
DIM D_efface$
DIM crlf$:crlf$=CHR$(10)+CHR$(13)
DIM msg$
D_efface$=Lecteur$+"test"

' création des répertoires et fichiers pour le test
msg$="Création du répertoire "+D_efface$+crlf$
msg$=msg$+"Après validation de ce message, vérifiez son existence sur votre disque..."
MESSAGE msg$
CreateDir(D_efface$)
CreateDir(D_efface$+"\dossier1")
CreateDir(D_efface$+"\dossier1\dossier2")
CreateDir(D_efface$+"\dossier1\dossier3")
FILE_OPEN_WRITE 1,Lecteur$+"test\dossier1\texte3.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,Lecteur$+"test\dossier1\texte4.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,Lecteur$+"test\dossier1\dossier2\texte1.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,Lecteur$+"test\dossier1\dossier2\texte2.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,Lecteur$+"test\dossier1\dossier3\texte6.txt":FILE_CLOSE 1
msg$="Le repertoire "+D_efface$+" est crée. On va maintenant l'effacer."+crlf$+crlf$
msg$=msg$+"Note:"+crlf$+"Assurez-vous que votre explorateur de fichier ne pointe pas"+crlf$
msg$=msg$+"dessus sinon le répertoire est verrouillé..."
MESSAGE msg$
Remove_Dir(D_efface$)
MESSAGE "Fini!"+crlf$+"Normalement vous ne devriez plus avoir de répertoire "+D_efface$
TERMINATE
END
' pour simplifier l'écriture de la démo ;)
SUB CreateDir(current_dir$)
 IF DIR_EXISTS(current_dir$)=0 THEN DIR_MAKE current_dir$
END_SUB

' Cette procédure utilise une DLIST.
' Vous pouvez adapter son numero à la valeur que vous voulez...
SUB Remove_Dir(current_dir$)
  IF VARIABLE("f$")=0 THEN DIM f$
  DLIST 100 : tmpDel_Dir(current_dir$,100)
  DELETE 100 : FREE f$
END_SUB

SUB tmpDel_Dir(current_dir$,Pile)
  ITEM_ADD Pile,current_dir$
  IF DIR_EXISTS(current_dir$)=1
    DIR_CHANGE current_dir$
    FILE_FIND_CLOSE : f$=FILE_FIND_FIRST$
    WHILE f$<>"_"
      IF FILE_EXISTS(f$)=1
        FILE_DELETE f$
        f$=FILE_FIND_NEXT$
      ELSE
        IF DIR_EXISTS(f$)=1
          tmpDel_Dir(f$,Pile)
        END_IF
      END_IF
    END_WHILE
    FILE_FIND_CLOSE
    f$=DIR_CURRENT$: DIR_CHANGE ".."
    DIR_REMOVE f$
  END_IF
  f$=ITEM_READ$(Pile,COUNT(Pile)):ITEM_DELETE Pile,COUNT(Pile)
  DIR_CHANGE f$:f$=FILE_FIND_FIRST$
END_SUB
Revenir en haut Aller en bas
http://nardo26.lescigales.org
papydall

papydall


Nombre de messages : 7004
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMar 27 Nov 2012 - 16:35

Salut Nardo26.
Ce code marche parfaitement : belle illustration.
Ceci prouve que le bug relatif à FILE_FIND_FIRST$ et FILE _FIND_NEXT$ a été corrigé.
Merci à Jack.

Petite remarque :
Pour une nouvelle ligne ,un simple CR ( chr$(13)) suffit, pas besoin d’un LF (chr$(10)) en plus! Mais c'est secondaire!
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMar 27 Nov 2012 - 17:22

Salut Nardo,
Bizarre ton programme (chez moi):
L'arborescence des répertoires est bien créée sur ma clé usb (G:\Test ...), j'acquitte pour l'effacement, ça va dans le Remove_Dir et là il ne se passe plus rien: je ne dois pas aller jusqu'au TERMINATE puisqu'il reste un PANORAMIC.exe dans les tâches actives, et de plus les répertoires ne sont pas effacés, ça doit tourner en rond quelque part.
Et effectivement je n'ai pas le message de fin, ça boucle dans la procédure d'effacement.

Pour moi, ce que je fais habituellement pour supprimer une arborescence de répertoires, c'est tout simplement (par exemple pour le répertoire que tu donnes D_efface$):
Code:
EXECUTE "CMD.exe /C RMDIR /S /Q " + D_efface$
et ça marche très bien.
(le /S c'est pour supprimer également tous les sous-répertoires et leur contenu, le /Q c'est pour ne pas demander confirmation)
Évidemment à manipuler en sachant bien ce qu'on fait: tout est irrémédiablement effacé.

Je note en passant que le DIR_REMOVE de Panoramic ne fait rien si le répertoire n'est pas vide, ce qui est normal d'après la doc, mais surtout il ne signale pas d'erreur dans ce cas, ce qui n'est pas normal.


AUTANT POUR MOI NARDO. JE N'AI PAS LA DERNIERE VERSION DE PANORAMIC AVEC LA CORRECTION DU BUG
JE REESSAYE AVEC LA DERNIERE.

Donc j'ai mis le bug en évidence Very Happy
Effectivement, je confirme, avec la dernière version ça marche très bien, dont acte.
N'empêche que ma méthode (certes moins élégante et moins sophistiquée que la tienne) est bien plus rapide à mettre en oeuvre...
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7004
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMar 27 Nov 2012 - 17:49

@JL35
La réponse est dans ta question : tu n’as pas la dernière version de Panoramic qui a corrigé le bug de FILE_FIND_FIRST$ / FILE_FIND_NEXT$


Pour les autres remarques, je suis d’accord avec toi, et j’ajouterais que le répertoire à supprimer ne doit pas être aussi le répertoire en cours !
On peu aussi abréger RMDIR en RD


Dernière édition par papydall le Mar 27 Nov 2012 - 17:59, édité 1 fois
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMar 27 Nov 2012 - 17:54

Eh oui, j'ai d'ailleurs édité pour confirmer que ça marche. Du coup ça m'a forcé à me mettre à jour.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7004
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMar 27 Nov 2012 - 18:02

C’est toujours ça de gagné : la mise à jour ( pour ne pas rester à la mise à nuit !!!)
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMer 28 Nov 2012 - 7:26

Bonjour,

On peut faire comme le dis JL35, un RMDIR /S , cela fonctionne très bien.
Par contre l'apparition de la fenêtre DOS n'est pas tip-top mais cela marche ! Smile
D'ailleurs si Jack pouvait faire quelque chose à ce sujet, cela nous éviterai d'utiliser des DLL pour masquer cette fenêtre... Wink

Pour ma défense, la procédure Remove_dir m'a permis de vérifier que le FILE_FIND_CLOSE remplissait bien son rôle avec la dernière version
et que les variables locales ne sont bien déclarées qu'une seule fois "donc globales" dans une SUB (d'où l'utilisation d'une pile car cette SUB est récursive)

Après coup je me suis rendu compte qu'il manquait une ligne dans le code:
il faut rajouter, juste avant de faire le FILE_DELETE f$

Code:
FILE_READ_ONLY_OFF f$
Sinon cela ne marche pas si un répertoire contient un fichier en lecture seule... Wink

@papydall : le CHR$(10) est un réflexe chez moi... Laughing

JL35 a écrit:
N'empêche que ma méthode (certes moins élégante et moins sophistiquée que la tienne) est bien plus rapide à mettre en oeuvre...
C'était vrai avant que je mette sur le forum ce bout de code, maintenant un simple copier/coller ou même un include de la procédure et c'est tout aussi rapide... Laughing

Pour ceux qui veulent l’intégrer dans une librairie, je conseille de faire en sorte que le numéro de la DLIST soit déterminé de manière automatique.
J'avais fais une SUB qui me cherchait un numéro d'objet dispo (dans "gestion de chaine de caractères"), ce qui nous donnes :

Code:
SUB Remove_Dir(current_dir$)
  DIM_LOCAL i% : StrObjectId%(ADR(i%))
  IF VARIABLE("f$")=0 THEN DIM f$
  DLIST i% : tmpDel_Dir(current_dir$,i%)
  DELETE i% : FREE f$
END_SUB
' ------------------------------------------------------------------------------
' Procédure interne pour fonctionnement dans une librairie
' Renvoie un numéro d'objet libre
' p_r% : adresse de la variable de retour
' ------------------------------------------------------------------------------
SUB StrObjectId%(p_r%)
  DIM_LOCAL i%:i%=1
  i% = 1
  WHILE OBJECT_EXISTS(i%) = 1 : i% = i% + 1 : END_WHILE
  POKE p_r%,i%
END_SUB

Il y a une chose à modifier aussi c'est le nom de la variable f$ : il vaut mieux y mettre un nom à coucher dehors pour être sûr qu'elle ne soit pas utiliser ailleurs... (par exemple RemoveDir_f$) Wink


Dernière édition par Nardo26 le Mer 28 Nov 2012 - 7:50, édité 1 fois
Revenir en haut Aller en bas
http://nardo26.lescigales.org
pan59

pan59


Nombre de messages : 367
Age : 66
Localisation : Wattignies
Date d'inscription : 16/10/2011

Supression d'un répertoire Empty
MessageSujet: Suppression d'un réprtoire.   Supression d'un répertoire EmptyMer 28 Nov 2012 - 7:48

Bonjour.

Est-il possible de désactiver l'affichage de la fenêtre DOS en ajoutant un echo off ?

Code:
EXECUTE "CMD.exe echo off"
EXECUTE "CMD.exe /C RD /S /Q " + D_efface$


Merci de vos réponses.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMer 28 Nov 2012 - 7:52

Non pan, il faut utiliser la DLL de Klaus pour que l'appel n'ouvre pas de fenêtre.
Echo off fera juste que tu ne verra rien dans la fenêtre noire, mais tu verras la fenêtre vide
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMer 28 Nov 2012 - 7:52

Bonjour Pan59,

Non car chaque commande EXECUTE te provoque l'affichage d'une fenêtre:
donc dans ton exemple, tu vas avoir 2 fenêtres...
Bon je vous laisse faut que je parte au boulot... Wink
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMer 28 Nov 2012 - 9:45

Nardo, j'avais bien compris ta démarche, ton code est bien plus élégant que mon appel à une fonction msdos, mais quand même au prix de quelques lignes de code au lieu d'une seule (incidemment, bon courage pour le boulot, et vive la retraite !).

@pan59
Concernant l'apparition de la fenêtre noire, justement, j'ai donné ailleurs une manip simple pour l'éviter, sans faire appel à une dll, tout dans le code panoramic, c'est là:
https://panoramic.1fr1.net/t2539-suppression-de-la-fenetre-noire?highlight=fen%EAtre+noire
Ce qui donnerait ici, en reprenant la sub que j'ai donné:
Code:
Exprog("Cmd.exe /c RMDIR /S /Q " + D_efface$)
et là, plus de fenêtre noire !
(ce serait évidemment mieux, comme l'a dit Nardo, si c'était intégré à Panoramic).
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMer 28 Nov 2012 - 17:55

Oups ! Embarassed
J'avais zappé ta solution en vbs... Smile
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMer 28 Nov 2012 - 22:02

Ça peut toujours intéresser les programmeurs un peu réticents à adjoindre des dll à leurs exécutables s'il y a une possibilité (même un peu tordue) de faire autrement avec Panoramic.

Je ne parle pas de moi hein ! Very Happy

Quoique ...
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12291
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMer 28 Nov 2012 - 22:47

Soyons précis:

Cette solution avec VBScript marche parfaitement. Mais, et il y a un MAIS:
VBScript est un produit MicroSoft, fourni avec la plupart des systèmes Windows, mais pas systématiquement. Et cet outil utilise un exécutable et des DLLs Windows, de façon interne.

Alors, si on a ce produit sur son système, tant mieux. Sinon, il faut le télécharger et l'installer, et c'est plutôt galère s'il s'agit d'une distribution pour un site tiers. Pour cette raison, je préfère en général la solution par DLL, car on reste interne à Panoramic, gardant la maîtrise et évitant d'éventuels problèmes de licence.

EDIT

Pour ceux qui veulent en savoir plus:
regarder ici
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMer 28 Nov 2012 - 23:09

Dont acte, je pensais que ça faisait partie systématiquement de la livraison Windows, l'ayant toujours eu en standard sur mes pc.
Et si je regarde vers ton lien (intéressant, et que je connaissais), je lis ceci:
Citation :
WSH+VBS+JS sont intégrés dès le départ dans Windows 98, 98SE, ME, 2000, XP.
donc directement utilisables.
Ils doivent être installés au préalable sous Windows 95 et NT4.
et donc je suppose (ça date de 2005) que ça a suivi dans Vista et 7
Maintenant, que ça utilise des dll en interne, je m'en doute un peu, mais l'avantage que j'y voyais est que l'exécutable produit contient tout ce qui lui est nécessaire en un seul fichier.
Citation :
...la solution par DLL, car on reste interne à Panoramic
Il faut quand même joindre un fichier externe (la ou les dll) à l'exécutable créé par Panoramic, avec les problèmes de chemins d'accès que ça peut poser.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12291
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyMer 28 Nov 2012 - 23:47

Ah, c'est le fichier supplémentaire qui dérange ! Bien sûr, il y a un fichier en plus, et pour le moment, il ne peut pas être pris en compte dans la génération d'application. Espérons qu'un jour, Jack ouvrira la génération d'application à d'autres types de fichiers.

Mais souvent, il y a de toutes façons des fichiers annexes (images, données tels que plans de jeux, fichiers d'aide, etc), et un fichier supplémentaire n'est pas si bloquant que ça, d'autant qu'il y a des générateurs de programmes d'instammation gratuits sur le net, et ils prendront automatiquement la mise en place en charge. On peut même en écrire un en Panoramic, spécifique au programme à installer... Si j'ai dit que c'est "interne" à Panoramic, c'était une maladresse. Je voulais dire qu'on ne fait pas appel à des logiciels tiers, ce qui est toujours un peu délicat. Et pour la présence de VBScript sous XP, tu as raison: c'est présent d'office. Mais suivant les versions, ce n'est pas forcément activé ! Il faut donc activer cette partie suivant les instructions données sur cette page (ou ailleurs, sur MSDN par exemple). C'est ce qui m'est arrivé lorsque j'ai voulu m'en servir la première fois.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyJeu 29 Nov 2012 - 1:03

Citation :
On peut même en écrire un en Panoramic, spécifique au programme à installer
J'ai voulu en faire un, et cela marchait, jusqu'à je veuille faire un fichier zip avec.
Et là ça ne marche plus. Je ne sais plus la raison, mais il me semble que le chemin zip n'est pas accessible. Toujours est-il qu'il y a un problème de chemin que je n'ai pas su résoudre. Si on fait un installateur sans zipper le programme, ça marche bien.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyJeu 29 Nov 2012 - 7:33

Bonjour,

Petites modifs en tenant compte de ce que j'ai écris avant :

Code:
HIDE 0
APPLICATION_TITLE "Demo: Remove_Dir"

' Variables pour la démo
DIM Lecteur$:Lecteur$="C:\"
DIM D_efface$
DIM lf$:lf$=CHR$(13) : ' pour faire plaisir à Papydall ;)
DIM msg$
D_efface$=Lecteur$+"test"

' création des répertoires et fichiers pour le test
msg$="Création du répertoire "+D_efface$+lf$
msg$=msg$+"Après validation de ce message, vérifiez son existence sur votre disque..."
MESSAGE msg$

' On crée des répertoires quelconques
CreateDir(D_efface$)
CreateDir(D_efface$+"\dossier1")
CreateDir(D_efface$+"\dossier1\dossier2")
CreateDir(D_efface$+"\dossier1\dossier3")

' Ainsi que des fichiers
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\texte3.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\texte4.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier2\texte1.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier2\texte2.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier3\texte6.txt":FILE_CLOSE 1

msg$="Le répertoire "+D_efface$+" est crée. On va maintenant l'effacer."+lf$+lf$
msg$=msg$+"Note:"+lf$+"Assurez-vous que votre explorateur de fichier ne pointe pas"+lf$
msg$=msg$+"dessus sinon le répertoire est verrouillé..."
MESSAGE msg$

' Destruction du répertoire

Remove_Dir(D_efface$)


MESSAGE "Fini!"+lf$+"Normalement vous ne devriez plus avoir de répertoire "+D_efface$
TERMINATE

END

' pour simplifier la lecture/écriture de la démo ;)
SUB CreateDir(current_dir$)
 IF DIR_EXISTS(current_dir$)=0 THEN DIR_MAKE current_dir$
END_SUB

' ------------------------------------------------------------------
' Procédure de destruction de répertoire
' ------------------------------------------------------------------

SUB Remove_Dir(current_dir$)
  DIM_LOCAL i% : getObjectId%(ADR(i%))
  DIM RemoveDir_f$
  DLIST i% : tmpDel_Dir(current_dir$,i%)
  DELETE i% : FREE RemoveDir_f$
END_SUB

SUB tmpDel_Dir(current_dir$,Pile%)
  ITEM_ADD Pile%,current_dir$
  IF DIR_EXISTS(current_dir$)=1
    DIR_CHANGE current_dir$
    FILE_FIND_CLOSE : RemoveDir_f$=FILE_FIND_FIRST$
    WHILE RemoveDir_f$<>"_"
      IF FILE_EXISTS(RemoveDir_f$)=1
        FILE_READ_ONLY_OFF RemoveDir_f$
        FILE_DELETE RemoveDir_f$
        RemoveDir_f$=FILE_FIND_NEXT$
      ELSE
        IF DIR_EXISTS(RemoveDir_f$)=1
          tmpDel_Dir(RemoveDir_f$,Pile%)
        END_IF
      END_IF
    END_WHILE
    FILE_FIND_CLOSE
    RemoveDir_f$=DIR_CURRENT$: DIR_CHANGE ".."
    DIR_REMOVE RemoveDir_f$
  END_IF
  RemoveDir_f$=ITEM_READ$(Pile%,COUNT(Pile%)):ITEM_DELETE Pile%,COUNT(Pile%)
  DIR_CHANGE RemoveDir_f$:RemoveDir_f$=FILE_FIND_FIRST$
END_SUB
' ------------------------------------------------------------------------------
' Procédure interne pour fonctionnement dans une librairie
' Renvoie un numéro d'objet libre
' p_r% : adresse de la variable de retour
' ------------------------------------------------------------------------------
SUB getObjectId%(p_r%)
  DIM_LOCAL i%:i%=1
  i% = 1
  WHILE OBJECT_EXISTS(i%) = 1 : i% = i% + 1 : END_WHILE
  POKE p_r%,i%
END_SUB
Wink
Revenir en haut Aller en bas
http://nardo26.lescigales.org
papydall

papydall


Nombre de messages : 7004
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyJeu 29 Nov 2012 - 11:14

Salut Nardo 26
Merci pour me faire plaisir.
Ah Ah : il y a une ERREUR et non un bug ! ‘(161) Unknown directory. Line 81’
C’est à cause de CHANGE_DIR que Jack vient de compléter.

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyJeu 29 Nov 2012 - 13:06

En effet Papydall...

Voici la version corrigée : Smile

Code:
HIDE 0
APPLICATION_TITLE "Demo: Remove_Dir"

' Variables pour la démo
DIM Lecteur$:Lecteur$="C:\"
DIM D_efface$
DIM lf$:lf$=CHR$(13) : ' pour faire plaisir à Papydall ;)
DIM msg$
D_efface$=Lecteur$+"test"

' création des répertoires et fichiers pour le test
msg$="Création du répertoire "+D_efface$+lf$
msg$=msg$+"Après validation de ce message, vérifiez son existence sur votre disque..."
MESSAGE msg$
' On crée des répertoires quelconques
CreateDir(D_efface$)
CreateDir(D_efface$+"\dossier1")
CreateDir(D_efface$+"\dossier1\dossier2")
CreateDir(D_efface$+"\dossier1\dossier3")

' Ainsi que des fichiers
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\texte3.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\texte4.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier2\texte1.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier2\texte2.txt":FILE_CLOSE 1
FILE_OPEN_WRITE 1,D_efface$+"\dossier1\dossier3\texte6.txt":FILE_CLOSE 1

msg$="Le répertoire "+D_efface$+" est crée. On va maintenant l'effacer."+lf$+lf$
msg$=msg$+"Note:"+lf$+"Assurez-vous que votre explorateur de fichier ne pointe pas"+lf$
msg$=msg$+"dessus sinon le répertoire est verrouillé..."
MESSAGE msg$

' Destruction du répertoire

Remove_Dir(D_efface$)


MESSAGE "Fini!"+lf$+"Normalement vous ne devriez plus avoir de répertoire "+D_efface$
TERMINATE

END

' pour simplifier la lecture/écriture de la démo ;)
SUB CreateDir(current_dir$)
 IF DIR_EXISTS(current_dir$)=0 THEN DIR_MAKE current_dir$
END_SUB

' ------------------------------------------------------------------
' Procédure de destruction de répertoire
' ------------------------------------------------------------------

SUB Remove_Dir(current_dir$)
  DIM_LOCAL i% : getObjectId%(ADR(i%))
  DIM RemoveDir_f$
  DLIST i% : tmpDel_Dir(current_dir$,i%)
  DELETE i% : FREE RemoveDir_f$
END_SUB

SUB tmpDel_Dir(current_dir$,Pile%)
  ITEM_ADD Pile%,current_dir$
  IF DIR_EXISTS(current_dir$)=1
    DIR_CHANGE current_dir$
    FILE_FIND_CLOSE : RemoveDir_f$=FILE_FIND_FIRST$
    WHILE RemoveDir_f$<>"_"
      IF FILE_EXISTS(RemoveDir_f$)=1
        FILE_READ_ONLY_OFF RemoveDir_f$
        FILE_DELETE RemoveDir_f$
        RemoveDir_f$=FILE_FIND_NEXT$
      ELSE
        IF DIR_EXISTS(RemoveDir_f$)=1
          tmpDel_Dir(RemoveDir_f$,Pile%)
        END_IF
      END_IF
    END_WHILE
    FILE_FIND_CLOSE
    RemoveDir_f$=DIR_CURRENT$: DIR_CHANGE ".."
    DIR_REMOVE RemoveDir_f$
  END_IF
  ITEM_DELETE Pile%,COUNT(Pile%)
  RemoveDir_f$=FILE_FIND_FIRST$
END_SUB
' ------------------------------------------------------------------------------
' Procédure interne pour fonctionnement dans une librairie
' Renvoie un numéro d'objet libre
' p_r% : adresse de la variable de retour
' ------------------------------------------------------------------------------
SUB getObjectId%(p_r%)
  DIM_LOCAL i%:i%=1
  i% = 1
  WHILE OBJECT_EXISTS(i%) = 1 : i% = i% + 1 : END_WHILE
  POKE p_r%,i%
END_SUB
Revenir en haut Aller en bas
http://nardo26.lescigales.org
papydall

papydall


Nombre de messages : 7004
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyJeu 29 Nov 2012 - 17:02

OK !
Note : 9.9/10
Supression d'un répertoire Haha-rire-395
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
lepetitmarocain




Nombre de messages : 334
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyJeu 21 Jan 2021 - 16:58

Bonjour à tous.

Je reprends un post de 2012, pour vous demandez comment faire pour supprimer une Directory vide ou non.

J'ai essayé l'exemple qu'il y avait, qui crée des directory et les supprime ensuite, mais il ne se passe rien.

J' ai essayé également avec Execute puis commande en Dos, et toujours rien.

Quelqu'un a t'il y un exemple simple.

Merci beaucoup .

Bonne soirée
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2390
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyJeu 21 Jan 2021 - 17:17

Bonjour !

@LepetitMarocain

Tu ne peux supprimer un répertoire que s'il est vide.

Il faut donc supprimer tous les fichiers présents dans le répertoire concerné, puis le supprimer.

En ligne de commande, tu vas dans ton répertoire à supprimer par la commande cd,
puis tu tapes del *.* pour effacer tous les fichiers présents dans le répertoire,
tu remontes l'arborescence d'un pas par la commande cd..
et tu détruis ton répertoire par la commande rd.

Si tu as des fichiers cachés, ils ne seront pas effacés et tu ne pourras pas supprimer ton répertoire.
Il faudra préalablement enlever l'attribut caché au(x) fichier(s) avec la command attrib.

Pour l'utilisation des commandes DOS, tu as l'excellent utilitaire que JL35 a partagé : https://panoramic.1fr1.net/t6548-commandes-ms_dos#78656
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyJeu 21 Jan 2021 - 19:59

Effectivement c'est bien plus simple avec une commande Dos
Code:
EXECUTE_WAIT "cmd.exe|/c RD /S /Q "+rep$
Supprime le répertoire rep$ et tout son contenu, y compris les sous-répertoires.
Mais il faut bien être sûr de ce que l'on fait, il n'y a pas de demande de confirmation
et c'est irréversible.
Revenir en haut Aller en bas
lepetitmarocain




Nombre de messages : 334
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire EmptyVen 22 Jan 2021 - 19:20

Bonsoir à tous.

Merci beaucoup à Marc & à JL35 pour vos réponses, qui font que je vais pouvoir continuer en essayant de ne pas bousiller mon disque

dur.

(Je plaisante bien entendu car je vais faire très attention)

Bonne soirée
Revenir en haut Aller en bas
Contenu sponsorisé





Supression d'un répertoire Empty
MessageSujet: Re: Supression d'un répertoire   Supression d'un répertoire Empty

Revenir en haut Aller en bas
 
Supression d'un répertoire
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Répertoire
» Répertoire parent
» Répertoire des téléchargements
» Renommer un répertoire
» Choix d'un répertoire

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: