Français
Forum

Verzeichnis avec allem enthaltenen Fichiers et Unterverzeichnissen (restlos) effacer

 
- page 1 -



Julian
Schmidt
comment peux on un Verzeichnis am elegantesten avec allen Unterverzeichnissen et allem enthaltenen Fichiers effacer?
 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
24.07.2011  
 



 
- page 2 -


« cette Beitrag wurde comme Solution gekennzeichnet. »

- page 3 -



Dieter
Zornow
pourquoi prends du pas simple qui API zum effacer. ici est un flexibler Code pour Effacer, Kopieren débaptiser et Bewegen. Je pour paramètre peux du dans den corbeille à papier ou bien aussi pas effacer, entier comment tu veux. cela erspart doch den ganzen Hickhack et arbeitet zuverlässig. Im Beispiel wird sans demande un Verzeichnis avec Unterverzeichnissen pas dans den corbeille à papier gelöscht
' paramètre 1: Auszuführende Operation=COPY, DELETE, RENAME, MOVE
' paramètre 2: Quelldatei(en)
' paramètre 3: Zielldatei(en)
' paramètre 4: 0 = Benutzer fragen, 1= sans demande effacer
' paramètre 5: 0 = dans corbeille à papier Déplacer, 1= "endgültig" effacer
' paramètre 6: 0 = démolir chez vorhandener Dossier, 1 = Kopie qui Dossier anlegen

Proc SHFileoperation

    Paramètres opération$,File$,File2$,confirm%,recycle%,can%
    Déclarer opstruct#,file#,file2#,title#,operation&
    Var FOF_Flag% = 1 | 512 |  2048'FOF_MULTIDESTFILES,FOF_NOCONFIRMMKDIR,FOF_NOCOPYSECURITYATTRIBS
    Faible title#,24
    string title#,0 = "Fileoperation Progress"

    Select upper$(opération$)

        CaseOf "RENAME"

        operation&=4

        CaseOf "COPY"

        operation&=2

        CaseOf "MOVE"

        operation&=1

        CaseOf "DELETE"

        operation&=3

    endselect

    cas confirm%:confirm%=16
    Casenot recycle%:recycle%=64

    Si can%

        FOF_Flag% = FOF_Flag% | confirm% | recycle% | $20 | 8'$20 = FOF_WANTMAPPINGHANDLE 8 = FOF_RENAMEONCOLLISION

    D'autre

        FOF_Flag% = FOF_FLAG% | confirm% | recycle%'16 = FOF_NOCONFIRMATION,64 = FOF_ALLOWUNDO

    endif

    Faible opstruct#,30:Faible file#,(Len(file$)+2):Faible file2#,(Len(file2$)+2)
    String file#,0=(file$+Chr$(0)):String file2#,0=(file2$+Chr$(0))
    Long opstruct#,0=GetActiveWindow()' Handle des aufrufenden Fensters
    Long opstruct#,4=operation&'quelle Dateioperation gemacht wird
    Long opstruct#,8=file#' pfrom : ici qui Fichiers pour qui opération
    Long opstruct#,12=file2#'pto ici qui Zieldateinamen ou bien 0
    Word opstruct#,16=FOF_Flag%
    Long opstruct#,18=0'chez abbruch steht ici 1 seulement chez langen Operationen
    Long opstruct#,22=0' muss toujours zéro son, ici wird handle pour SHNameMappings gesetzt chez Kopie
    Long opstruct#,26=Title#'Überschrift des Fortschrittsdialogs chez langen Operationen
    Var FEHLER&=Externe("SHELL32","SHFileOperationA",opstruct#)

    IF (long(opstruct#,18)=1)

        MessageBox("Die Dateioperation wurde abgebrochen!","Abbruch par Benutzer!",64)

    ELSEIF (Fehler& <> 0)

        MessageBox(str$(fehler&),"Es est un faute aufgetreten",16)

    EndIf

    Si val($WinVer)> 5.0

        Cas LONG(opstruct#,22) <> 0:Externe("Shell32","SHFreeNameMappings",LONG(opstruct#,22))'min XP

    endif

    Dispose file#,file2#,opstruct#,title#

ENDPROC

cls
SHFileoperation("Delete","c:\\Temp\\Test\\",»,1,1,0)
imprimer "fertig"
Waitinput
end
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
26.07.2011  
 



Schonmal pour ChooseDir$ un imprimer getDir$("@") gemacht?

Vlt. devrait du zusätzlich aussi avant dem Effacer chacun individuel Dossier den Dateipfad qui Dossier (z.B. avec mid$ ) avec dem gewählten Verzeichnis comparer.
 
25.07.2011  
 




Julian
Schmidt
@Thomas - non, dans den corbeille à papier devoir qui Fichiers pour dem effacer pas landen. Effacer ist déjà dans Ordre aussi si es pas restlos ist.
@Marc - non, qu'est-ce que c'est deltree? Beispiel?
@IF: -
iF (25.07.11)
Schonmal pour ChooseDir$ un imprimer getDir$("@") gemacht?


comment soll cela marcher? peux du's dans den Code einbauen?

iF (25.07.11)
Vlt. devrait du zusätzlich aussi avant dem Effacer chacun individuel Dossier den Dateipfad qui Dossier (z.B. avec mid$ ) avec dem gewählten Verzeichnis comparer.


Gute concept!
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$(Annuaire choisir:"))
Messagebox("Ordner gelöscht","INFO",64)

Proc delete_folder_completely

    Paramètres Pfad$
    var addfiles.dll&=ImportDLL("addfiles.dll",»)
    var h&=Créer("List", 0)
    Chdir Pfad$
    cas @GETDIR $("@")=Pfad$ : AddFiles("*.*",h&,1)
    MoveListToHandle(h&)

    whileloop GetCount(h&)

        cas Left $(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$ : Effacer GetString$(h&,&loop-1)

    Endwhile

    clearlist h&
    Chdir Pfad$
    cas @GETDIR $("@")=Pfad$ :  AddDirs("*.*",h&,1)

    whileloop GetCount(h&),1,-1

        cas Left $(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$ : RmDir GetString$(h&,&loop-1)

    Endwhile

    destroywindow(h&)
    cas @GETDIR $("@")=Pfad$ : RmDir Pfad$
    FreeDLL addfiles.dll&

ENDPROC


@All
Weiterhin rester plusieurs Fragen offen.

pourquoi wird qui Ausgangsordner pas gelöscht? Trotz qui la ligne "case @GETDIR$("@")=Pfad$ : RmDir Pfad$".
pourquoi venez si je la première la ligne dans "delete_folder_completely(ChooseDir$(Annuaire choisir:"))" ändere une Fehlermeldung?

13 kB
Hochgeladen:25.07.2011
Downloadcounter74
Download
 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.07.2011  
 




Jörg
Sellmeyer
Mach doch la fois que voici

Aussi nützt Dir que voici:
cas @GETDIR $("@")=Pfad$ : AddFiles("*.*",h&,1)

rien, um peut-être. une faute abzufangen, là Dein Programme so ou bien so weitermacht. si, ensuite une vernünftige iF-Abfrage dans qui Du aussi une Alternative programmierst. alors une Messagebox "Falscher Pfad" ou bien quelque chose comme.

Du springst avec ChDir dans den Dossier rein. Es peux bien son, qui cette dadurch blockiert wird et Du seulement effacer peux, si Du wieder aus dem Dossier rausgehst: ChDir ".."

Effacer est un alter DOS-Befehl. très effectif mais aussi avec attention trop genießen, si on sich pas auskennt. Gib im DOS-la fenêtre Help /erase un.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
25.07.2011  
 



@Jörg: je crois Du meinst deltree statt erase ?! Effacer gibts mais aussi et /S ists comment deltree -

mon aktuelles XP kennt deltree ("""leider""") pas plus.

@Julian: simple pour Deinem ChooseDir$ la fois un imprimer getDir$("@") afin de regarder si ChooseDir$ den Pfad ändert.

pourquoi une Dossier/ Dossier sich pas entfernen peut... irgend un Prozess wird arrêt encore am ou bien im Verzeichnis rumwuseln et un Handle tenir - vlt. qui Explorer qui à seiner caché thumbs.db klebt ou bien un AV-Programme ou bien un Indizierungsdienst ou bien ou bien ou bien... nutze testweise qui addFile.DLL comment im Beispiel aussi la fois per external statt per importdll um aussi auszuschließen si je là oublier qc habe un Handle trop schließen.
 
25.07.2011  
 



Tippt aucun sur UAC?
 
25.07.2011  
 



Du meinst si qui Dossier einem anderen Benutzer est ou bien qui Benutzer ne...aucune Lösch-droite besitzt?
 
25.07.2011  
 




Jörg
Sellmeyer
oui - meinte naturellement deltree. Sorry...
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
25.07.2011  
 




Julian
Schmidt
Jörg Sellmeyer (25.07.11)
Aussi nützt Dir que voici:
cas @GETDIR $("@")=Pfad$ : AddFiles("*.*",h&,1)

rien, um peut-être. une faute abzufangen, là Dein Programme so ou bien so weitermacht. si, ensuite une vernünftige iF-Abfrage dans qui Du aussi une Alternative programmierst. alors une Messagebox "Falscher Pfad" ou bien quelque chose comme.


cls
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$(Annuaire choisir:"))

Proc delete_folder_completely

    Paramètres Pfad$
    declare faute%,z%,h&
    var addfiles.dll&=ImportDLL("addfiles.dll",»)

    tandis que 1

        si DirExists(Pfad$)

            h&=Créer("List", 0)
            Chdir Pfad$

            si @GETDIR $("@")=Pfad$

                AddFiles("*.*",h&,1)
                MoveListToHandle(h&)

                whileloop GetCount(h&)

                    si Left $(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$

                        si FileExists(GetString$(h&,&loop-1))

                            Effacer GetString$(h&,&loop-1)

                            si FileExists(GetString$(h&,&loop-1))

                                Messagebox("Die Dossier '"+GetString$(h&,&loop-1)+"' konnte pas gelöscht volonté!","ERROR",16)
                                faute%=faute%+1

                            Endif

                        Endif

                    Endif

                Endwhile

                clearlist h&
                Chdir Pfad$

                si @GETDIR $("@")=Pfad$

                    AddDirs("*.*",h&,1)

                    whileloop GetCount(h&),1,-1

                        si Left $(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$

                            si DirExists(GetString$(h&,&loop-1))

                                RmDir GetString$(h&,&loop-1)

                                si DirExists(GetString$(h&,&loop-1))

                                    Messagebox("Das Verzeichnis '"+GetString$(h&,&loop-1)+"' konnte pas gelöscht volonté!","ERROR",16)
                                    faute%=faute%+1

                                Endif

                            Endif

                        Endif

                    Endwhile

                    si @GETDIR $("@")=Pfad$

                        si DirExists(Pfad$)

                            RmDir Pfad$

                            si DirExists(Pfad$)

                                Messagebox("Das Verzeichnis '"+Pfad$+"' konnte pas gelöscht volonté!","ERROR",16)
                                faute%=faute%+1

                            Endif

                        Endif

                    d'autre

                        Messagebox("Der Pfad '"+Pfad$+"' konnte pas ouvert volonté!","ERROR",16)

                    Endif

                d'autre

                    Messagebox("Der Pfad '"+Pfad$+"' konnte pas ouvert volonté!","ERROR",16)

                Endif

            d'autre

                Messagebox("Der Pfad '"+Pfad$+"' konnte pas ouvert volonté!","ERROR",16)

            Endif

        d'autre

            Messagebox("Der Pfad '"+Pfad$+"' ist pas vorhanden","ERROR",16)

        Endif

        si faute%=0

            pause

        d'autre

            z%=Messagebox("Das Effacer des Ordnes '"+Pfad$+"' était pas erfolgreich! voulez-vous es Wiederholen?","INFO",5+64+256+4096)

            si z%=4

                faute%=0

            d'autre

                pause

            Endif

        Endif

    Endwhile

    destroywindow(h&)
    FreeDLL addfiles.dll&

ENDPROC


Jörg Sellmeyer (25.07.11)
Du springst avec ChDir dans den Dossier rein. Es peux bien son, qui cette dadurch blockiert wird et Du seulement effacer peux, si Du wieder aus dem Dossier rausgehst: ChDir ".."


comment pourrait je quelque chose comme dans den Code einbeziehen?

iF (25.07.11)
pourquoi une Dossier/ Dossier sich pas entfernen peut... irgend un Prozess wird arrêt encore am ou bien im Verzeichnis rumwuseln et un Handle tenir - vlt. qui Explorer qui à seiner caché thumbs.db klebt ou bien un AV-Programme ou bien un Indizierungsdienst


cela habe je bereits vermutet! j'ai deswegen versucht den Dossier freizugeben, den ordinateur neugestartet, Explorer.exe finissez. après ging es, comment zuvor également pas! Anschließend habe je sur Unlocker überprüft si un Prozess den Dossier verwendet. qui Sagte mir cela il pas dans Verwendung ist! Pour einem weiteren Test des Löschens ging es wieder pas. Liegt etwa am Quellcode, bzw. à RmDir? ou bien weil XProfan selbst cette Dossier blockiert.

iF (25.07.11)
ou bien ou bien ou bien... nutze testweise qui addFile.DLL comment im Beispiel aussi la fois per external statt per importdll um aussi auszuschließen si je là oublier qc habe un Handle trop schließen.


Muss je qui DLL devant encore iwie einbinden [UseDLL ou bien so?]?
 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.07.2011  
 



non, simple seulement Externe.
 
25.07.2011  
 




Julian
Schmidt
Über den Aufruf sur Externe venez wiederum une Fehlermeldung.
Liegt es vlt daran le moi den kompletten Pfad zur DLL angeben muss?
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$(Annuaire choisir:"))

Proc delete_folder_completely

    Paramètres Pfad$
    declare faute%,z%,h&
    'var addfiles.dll&=ImportDLL("addfiles.dll",»)

    tandis que 1

        si DirExists(Pfad$)

            h&=Créer("List", 0)
            Chdir Pfad$

            si @GETDIR $("@")=Pfad$

                'AddFiles("*.*",h&,1)
                external("addfiles.dll","AddFiles","*.*",h&,1)
                MoveListToHandle(h&)

                whileloop GetCount(h&)

                    si Left $(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$

                        si FileExists(GetString$(h&,&loop-1))

                            Effacer GetString$(h&,&loop-1)

                            si FileExists(GetString$(h&,&loop-1))

                                Messagebox("Die Dossier '"+GetString$(h&,&loop-1)+"' konnte pas gelöscht volonté!","ERROR",16)
                                faute%=faute%+1

                            Endif

                        Endif

                    Endif

                Endwhile

                clearlist h&
                Chdir Pfad$

                si @GETDIR $("@")=Pfad$

                    'AddDirs("*.*",h&,1)
                    external("addfiles.dll","AddDirs","*.*",h&,1)

                    whileloop GetCount(h&),1,-1

                        si Left $(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$

                            si DirExists(GetString$(h&,&loop-1))

                                RmDir GetString$(h&,&loop-1)

                                si DirExists(GetString$(h&,&loop-1))

                                    Messagebox("Das Verzeichnis '"+GetString$(h&,&loop-1)+"' konnte pas gelöscht volonté!","ERROR",16)
                                    faute%=faute%+1

                                Endif

                            Endif

                        Endif

                    Endwhile

                    si @GETDIR $("@")=Pfad$

                        si DirExists(Pfad$)

                            RmDir Pfad$

                            si DirExists(Pfad$)

                                Messagebox("Das Verzeichnis '"+Pfad$+"' konnte pas gelöscht volonté!","ERROR",16)
                                faute%=faute%+1

                            Endif

                        Endif

                    d'autre

                        Messagebox("Der Pfad '"+Pfad$+"' konnte pas ouvert volonté!","ERROR",16)

                    Endif

                d'autre

                    Messagebox("Der Pfad '"+Pfad$+"' konnte pas ouvert volonté!","ERROR",16)

                Endif

            d'autre

                Messagebox("Der Pfad '"+Pfad$+"' konnte pas ouvert volonté!","ERROR",16)

            Endif

        d'autre

            Messagebox("Der Pfad '"+Pfad$+"' ist pas vorhanden","ERROR",16)

        Endif

        si faute%=0

            pause

        d'autre

            z%=Messagebox("Das Effacer des Ordnes '"+Pfad$+"' était pas erfolgreich! voulez-vous es Wiederholen?","INFO",5+64+256+4096)

            si z%=4

                faute%=0

            d'autre

                pause

            Endif

        Endif

    Endwhile

    destroywindow(h&)
    'FreeDLL addfiles.dll&

ENDPROC

 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.07.2011  
 




Jörg
Sellmeyer

den kompletten Pfad zur DLL angeben muss?


la hâte Du es déjà ausprobiert?
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
25.07.2011  
 




Julian
Schmidt
Jörg Sellmeyer (25.07.11)
Julian57 (25.07.11)
den kompletten Pfad zur DLL angeben muss?


la hâte Du es déjà ausprobiert?


non allez malheureusement pas.
Def DateiName(1) $ Substr(@$(1),-1,"\\")
Def DateiPfad(1) Translate$(@$(1),("\\" + DateiName(@$(1))),»)
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$(Annuaire choisir:"))

Proc delete_folder_completely

    Paramètres Pfad$
    declare faute%,z%,h&
    'var addfiles.dll&=ImportDLL("addfiles.dll",»)

    tandis que 1

        si DirExists(Pfad$)

            h&=Créer("List", 0)
            Chdir Pfad$

            si @GETDIR $("@")=Pfad$

                'AddFiles("*.*",h&,1)
                Messagebox(DateiPfad(Par$(1)) +"\\addfiles.dll",»,0)
                external(DateiPfad(Par$(1)) +"\\addfiles.dll","AddFiles","*.*",h&,1)
                MoveListToHandle(h&)

                whileloop GetCount(h&)

                    si Left $(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$

                        si FileExists(GetString$(h&,&loop-1))

                            Effacer GetString$(h&,&loop-1)

                            si FileExists(GetString$(h&,&loop-1))

                                Messagebox("Die Dossier '"+GetString$(h&,&loop-1)+"' konnte pas gelöscht volonté!","ERROR",16)
                                faute%=faute%+1

                            Endif

                        Endif

                    Endif

                Endwhile

                clearlist h&
                Chdir Pfad$

                si @GETDIR $("@")=Pfad$

                    'AddDirs("*.*",h&,1)
                    external("addfiles.dll","AddDirs","*.*",h&,1)

                    whileloop GetCount(h&),1,-1

                        si Left $(GetString$(h&,&loop-1),Len(Pfad$))=Pfad$

                            si DirExists(GetString$(h&,&loop-1))

                                RmDir GetString$(h&,&loop-1)

                                si DirExists(GetString$(h&,&loop-1))

                                    Messagebox("Das Verzeichnis '"+GetString$(h&,&loop-1)+"' konnte pas gelöscht volonté!","ERROR",16)
                                    faute%=faute%+1

                                Endif

                            Endif

                        Endif

                    Endwhile

                    si @GETDIR $("@")=Pfad$

                        si DirExists(Pfad$)

                            RmDir Pfad$

                            si DirExists(Pfad$)

                                Messagebox("Das Verzeichnis '"+Pfad$+"' konnte pas gelöscht volonté!","ERROR",16)
                                faute%=faute%+1

                            Endif

                        Endif

                    d'autre

                        Messagebox("Der Pfad '"+Pfad$+"' konnte pas ouvert volonté!","ERROR",16)

                    Endif

                d'autre

                    Messagebox("Der Pfad '"+Pfad$+"' konnte pas ouvert volonté!","ERROR",16)

                Endif

            d'autre

                Messagebox("Der Pfad '"+Pfad$+"' konnte pas ouvert volonté!","ERROR",16)

            Endif

        d'autre

            Messagebox("Der Pfad '"+Pfad$+"' ist pas vorhanden","ERROR",16)

        Endif

        si faute%=0

            pause

        d'autre

            z%=Messagebox("Das Effacer des Ordnes '"+Pfad$+"' était pas erfolgreich! voulez-vous es Wiederholen?","INFO",5+64+256+4096)

            si z%=4

                faute%=0

            d'autre

                pause

            Endif

        Endif

    Endwhile

    destroywindow(h&)
    'FreeDLL addfiles.dll&

ENDPROC

 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.07.2011  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

30.954 Views

Untitledvor 0 min.
E.T.22.11.2023
Georg21.01.2021
AndreasS23.12.2018
Klaus Ernst09.01.2018
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie