Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » [RESOLU] Supprimer Simplement un répertoire et tout son contenu

#1 09-03-2007 10:55:09

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

[RESOLU] Supprimer Simplement un répertoire et tout son contenu

Bonjour,

je cherche à Supprimer Simplement un répertoire et tout son contenu c'est à dire SANS devoir effacer les fichiers et dossiers et  sous dossiers etc... un par un

j'ai déjà essayé avec ça :

Code: pb

FUNCTION ulong RemoveDirectory(ref string lpPathName) LIBRARY "kernel32.dll" ALIAS FOR "RemoveDirectoryA"

ça ne fonctionne pas (je suis sous WP Pro SP2)

j'ai aussi regardé du coté de la commande DOS RMDIR mais pour exécuter cette commande je dois la mettre dans un fichier .bat et ça ne m'arrange pas à moins qu'on me dise comment créer un fichier .bat  dynamiquement depuis PB ? (parceque je ne veux pas distribuer un .bat déjà fait avec mon exe et en plus le rep à effacer change tout le temps)

merci d'avance


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#2 09-03-2007 10:57:07

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Supprimer Simplement un répertoire et tout son contenu

Pour avoir passé quelques jours sur ce genre de fonction, si tu passes par une fonction PB tu dois obligatoirement supprimer les fichiers et sous dossiers contenus dans le répertoire un par un.... tu peux te faire une fonction recursive ca marche .. je dois avoir un code qui traine si ca tinteresse..

Hors ligne

 

#3 09-03-2007 11:17:13

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] Supprimer Simplement un répertoire et tout son contenu

ha ben oui ça m'intérèsse bien, ça me fait trop râler de devoir programmer ça


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#4 09-03-2007 11:31:05

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Supprimer Simplement un répertoire et tout son contenu

Code: pb

/****************************************************************************************/
/*  Supprime un dossier et son contenu avec le choix de supprimer les fichiers ou non                             */                      
/*                                        */
/* Paramètres :                                   */
/* a_repertoire  : répertoire à supprimer                          */
/* a_suppression : détermine si on supprime les fichiers contenus dans le répertoire                                */
/****************************************************************************************/

string ls_search,ls_directory,ls_file,ls_new_directory,ls_test
integer i,li_retour
ulong lu_retour_find,lu_retour_close
long ll_retour_next
boolean lb_retour_supp,lb_retour,lb_fichier_supprime

str_win32_find_data lstr_liste_file[]


lb_fichier_supprime = true

// Liste des fichiers contenus dans le dossier actuel
i = 1
ls_search = a_repertoire+gs_separateur+'*'
lu_retour_find=FindFirstFileA(ls_search,lstr_liste_file[i]) 
if lu_retour_find > 0 then 
  do 
    if lstr_liste_file[i].cfilename <> '.' and lstr_liste_file[i].cfilename <> '..' then
      
      // Si c'est un dossier on rappelle la fonction de suppression dossier
      if lstr_liste_file[i].dwFileAttributes = 16 then 
        
        // On vide le dossier et on essaye de le supprimer
        ls_directory = a_repertoire + gs_separateur + lstr_liste_file[i].cfilename
        fyb_suppression_repertoire( ls_directory, a_suppression)
        
      else
        
        ls_file = a_repertoire+gs_separateur+lstr_liste_file[i].cfilename
        lb_fichier_supprime = false
        // Si c'est un fichier 
        if a_suppression <>0 then 
          // Suppression du fichier actuel si 1
          lb_retour_supp = FileDelete(ls_file) 
          if not lb_retour_supp then 
            // Erreur suppression fichier
            FindClose(lu_retour_find)
            return 1
          end if
          lb_fichier_supprime = true
        end if    
      end if      
    end if
    i++
    ll_retour_next = FindNextFileA(lu_retour_find,lstr_liste_file[i])
    
  loop while ll_retour_next > 0 
  
  lu_retour_close = FindClose(lu_retour_find)
  
  // Si rien dans le répertoire ou suppression fichier effectuée
  if lb_fichier_supprime then
    ls_new_directory = "c:\"
    // Changement de repertoire pour pouvoir supprimer le dossier courant
    lb_retour = SetCurrentDirectoryA(ls_new_directory)
    // Suppression du répertoire    
    lb_retour=RemoveDirectoryA(a_repertoire) 
    
    if not(lb_retour) then 
      // Erreur de suppression dossier
      FindClose(lu_retour_find)
      return 2
    end if
  else
    // Si lb_fichier_supprime = false : choix de pas supprimer les fichiers
    // On ne peut alors pas supprimer les répertoires car il reste des fichiers
    FindClose(lu_retour_find)
    return 3
  end if
end if
FindClose(lu_retour_find)
return 0

Il se peut qu'il y ait des trucs à corriger voila voila

Hors ligne

 

#5 09-03-2007 11:33:08

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] Supprimer Simplement un répertoire et tout son contenu




juste si tu avais la définition de str_win32_find_data ?

Dernière modification par rincevent (09-03-2007 11:37:01)


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#6 09-03-2007 11:45:52

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Supprimer Simplement un répertoire et tout son contenu

en dos : rd dossier /S /Q
c'est vrai que c'est pas le top d'utiliser le dos (non-maîtrise du process, pas de récupération d'erreurs), mais là t'as pas besoin de batch, tu fais directement un Run( 'rd dossier /S /Q' ) et ensuite un DirectoryExists( dossier ) pour voir si c'est ok.


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#7 09-03-2007 11:46:03

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: [RESOLU] Supprimer Simplement un répertoire et tout son contenu

Code: pb

global type str_win32_find_data from structure
  unsignedlong    dwfileattributes
  strvb_filetime    ftcreationtime
  strvb_filetime    ftlastaccesstime
  strvb_filetime    ftlastwritetime
  unsignedlong    nfilesizehigh
  unsignedlong    nfilesizelow
  unsignedlong    dwreserved0
  unsignedlong    dwreserved1
  character    cfilename[260]
  character    calternatefilename[14]
end type


la voila ;)

Hors ligne

 

#8 09-03-2007 11:58:37

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] Supprimer Simplement un répertoire et tout son contenu

eRaSorZ a écrit:

en dos : rd dossier /S /Q
c'est vrai que c'est pas le top d'utiliser le dos (non-maîtrise du process, pas de récupération d'erreurs), mais là t'as pas besoin de batch, tu fais directement un Run( 'rd dossier /S /Q' ) et ensuite un DirectoryExists( dossier ) pour voir si c'est ok.

j'ai essayé mais ça ne marche pas je ne comprends pas pq.

si dans une fenetre DOS je tape

RMDIR /S /Q c:\deleteMe

ça efface bien le dossier mais si depuis PB je fais

run('RMDIR /S /Q c:\deleteMe')

ça ne marche pas.

merci quand même pour ta participation ;)


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#9 09-03-2007 12:02:05

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] Supprimer Simplement un répertoire et tout son contenu

TheZerg je crois que je vais devoir reprogrammer moi même parceqe maintenant il me faut la définition de     strvb_filetime  et je sens qu'après ce sera une autre puis encore une autre etc.

merci quand même à tous les 2


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#10 09-03-2007 12:07:20

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] Supprimer Simplement un répertoire et tout son contenu

MIRACLE !

run('CMD /C "' + 'RD /S /Q c:\deleteme\' + '"')

et c'est OK


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#11 09-03-2007 12:18:41

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Supprimer Simplement un répertoire et tout son contenu

rincevent a écrit:

MIRACLE !

run('CMD /C "' + 'RD /S /Q c:\deleteme\' + '"')

et c'est OK


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » [RESOLU] Supprimer Simplement un répertoire et tout son contenu

Pied de page des forums

Propulsé par FluxBB 1.2.22