| Supression d'un répertoire | |
|
|
Auteur | Message |
---|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Supression d'un répertoire Mar 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 | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Supression d'un répertoire Mar 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!
| |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Supression d'un répertoire Mar 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 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... | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Supression d'un répertoire Mar 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 | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Supression d'un répertoire Mar 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. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Supression d'un répertoire Mar 27 Nov 2012 - 18:02 | |
| C’est toujours ça de gagné : la mise à jour ( pour ne pas rester à la mise à nuit !!!) | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Supression d'un répertoire Mer 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 ! D'ailleurs si Jack pouvait faire quelque chose à ce sujet, cela nous éviterai d'utiliser des DLL pour masquer cette fenêtre... 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... @papydall : le CHR$(10) est un réflexe chez moi... - 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... 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$)
Dernière édition par Nardo26 le Mer 28 Nov 2012 - 7:50, édité 1 fois | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Suppression d'un réprtoire. Mer 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. | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Supression d'un répertoire Mer 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 | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Supression d'un répertoire Mer 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... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Supression d'un répertoire Mer 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+noireCe 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). | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Supression d'un répertoire Mer 28 Nov 2012 - 17:55 | |
| Oups ! J'avais zappé ta solution en vbs... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Supression d'un répertoire Mer 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 ! Quoique ... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Supression d'un répertoire Mer 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 | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Supression d'un répertoire Mer 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. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Supression d'un répertoire Mer 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. | |
|
| |
Invité Invité
| Sujet: Re: Supression d'un répertoire Jeu 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. |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Supression d'un répertoire Jeu 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 | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Supression d'un répertoire Jeu 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.
| |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Supression d'un répertoire Jeu 29 Nov 2012 - 13:06 | |
| En effet Papydall... Voici la version corrigée : - 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 | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| |
| |
lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: Supression d'un répertoire Jeu 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 | |
|
| |
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Supression d'un répertoire Jeu 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 | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Supression d'un répertoire Jeu 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. | |
|
| |
lepetitmarocain
Nombre de messages : 341 Age : 82 Localisation : Région Parisienne (à mon grand désespoir) Date d'inscription : 04/07/2018
| Sujet: Re: Supression d'un répertoire Ven 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 | |
|
| |
Contenu sponsorisé
| Sujet: Re: Supression d'un répertoire | |
| |
|
| |
| Supression d'un répertoire | |
|