Español
Foro

Directorio con allem enthaltenen Archivos y Unterverzeichnissen (restlos) löschen

 
- Página 1 -



Julian
Schmidt
¿Cómo se puede uno un directorio al elegantesten con allen Unterverzeichnissen y allem enthaltenen Archivos löschen?
 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
24.07.2011  
 



 
- Página 2 -


« Dieser Contribución wurde como Solución gekennzeichnet. »

- Página 3 -



Dieter
Zornow
¿Por qué nimmst du no simplemente el API para löschen. Hier es una flexibler Code para Löschen, Kopieren Umbenennen y Bewegen. Je después de Parámetro kannst du en el Papierkorb oder auch no löschen, bastante como du willst. Das erspart doch el ganzen Hickhack y arbeitet zuverlässig. Im Ejemplo se sin Nachfrage un directorio con Unterverzeichnissen no en el Papierkorb gelöscht
' Parámetro 1: Auszuführende Operation=COPY, DELETE, RENAME, MOVE
' Parámetro 2: Quelldatei(en)
' Parámetro 3: Zielldatei(en)
' Parámetro 4: 0 = Benutzer fragen, 1= sin Nachfrage löschen
' Parámetro 5: 0 = In Papierkorb mover, 1= "endgültig" löschen
' Parámetro 6: 0 = Alto en vorhandener Expediente, 1 = Kopie el Expediente invertir

Proc SHFileoperation

    Parámetros operation$,File$,File2$,confirm%,recycle%,can%
    Declarar opstruct#,file#,file2#,title#,operation&
    Var FOF_Flag% = 1 | 512 |  2048'FOF_MULTIDESTFILES,FOF_NOCONFIRMMKDIR,FOF_NOCOPYSECURITYATTRIBS
    Dim title#,24
    cadena title#,0 = "Fileoperation Progress"

    Select upper$(operation$)

        CaseOf "RENAME"

        operation&=4

        CaseOf "COPY"

        operation&=2

        CaseOf "MOVE"

        operation&=1

        CaseOf "DELETE"

        operation&=3

    endselect

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

    If can%

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

    Más

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

    endif

    Dim opstruct#,30:Dim file#,(Len(file$)+2):Dim file2#,(Len(file2$)+2)
    String file#,0=(file$+Chr$(0)):String file2#,0=(file2$+Chr$(0))
    Largo opstruct#,0=GetActiveWindow()' Handle des aufrufenden Fensters
    Largo opstruct#,4=operation&'Welche Dateioperation gemacht se
    Largo opstruct#,8=file#' pfrom : hier el Archivos para el Operation
    Largo opstruct#,12=file2#'pto hier el Zieldateinamen oder 0
    Word opstruct#,16=FOF_Flag%
    Largo opstruct#,18=0'En abbruch es hier 1 sólo en langen Operationen
    Largo opstruct#,22=0' muss siempre Null ser, hier se handle para SHNameMappings gesetzt en Kopie
    Largo opstruct#,26=Title#'Überschrift des Fortschrittsdialogs en langen Operationen
    Var FEHLER&=Externo("SHELL32","SHFileOperationA",opstruct#)

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

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

    ELSEIF (Fehler& <> 0)

        MessageBox(str$(fehler&),"Es es una Fehler aufgetreten",16)

    EndIf

    If val($WinVer)> 5.0

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

    endif

    Disponer file#,file2#,opstruct#,title#

ENDPROC

cls
SHFileoperation("Delete","c:\\Temp\\Test\\","",1,1,0)
imprimir "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 después de ChooseDir$ una imprimir getDir$("@") gemacht?

Vlt. solltest du zusätzlich auch antes el Löschen cada individual Expediente el Dateipfad el Expediente (z.B. con mid$ ) con el gewählten Directorio vergleichen.
 
25.07.2011  
 




Julian
Schmidt
@Thomas - Nein, en el Papierkorb debería el Archivos después de el löschen no landen. Borrar es ya Haga clic en Aceptar auch si no restlos es.
@Marc - Nein, qué es el deltree? Ejemplo?
@IF: -
IF (25.07.11)
Schonmal después de ChooseDir$ una imprimir getDir$("@") gemacht?


Como se el trabajo? ¿Puede du's en el código einbauen?

IF (25.07.11)
Vlt. solltest du zusätzlich auch antes el Löschen cada individual Expediente el Dateipfad el Expediente (z.B. con mid$ ) con el gewählten Directorio vergleichen.


Gute Concepto!
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$("Verzeichnis wählen:"))
Messagebox("Ordner gelöscht","INFO",64)

Proc delete_folder_completely

    Parámetros Pfad$
    var addfiles.dll&=ImportDLL("addfiles.dll","")
    var h&=Crear("List", 0)
    Chdir Pfad$
    caso @GetDir$("@")=Pfad$ : AddFiles("*.*",h&,1)
    MoveListToHandle(h&)

    whileloop GetCount(h&)

        caso Left$(GetString$(h&,&bucle-1),Len(Pfad$))=Pfad$ : Borrar GetString$(h&,&bucle-1)

    Endwhile

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

    whileloop GetCount(h&),1,-1

        caso Left$(GetString$(h&,&bucle-1),Len(Pfad$))=Pfad$ : RmDir GetString$(h&,&bucle-1)

    Endwhile

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

ENDPROC


@All
Weiterhin bleiben mehrere Fragen offen.

¿Por qué se el Ausgangsordner no gelöscht? Trotz el Línea "case @GetDir$("@")=Pfad$ : RmDir Pfad$".
¿Por qué kommt si yo el erste Línea en "delete_folder_completely(ChooseDir$("Verzeichnis wählen:"))" ändere una Fehlermeldung?

13 kB
Hochgeladen:25.07.2011
Ladeanzahl74
Descargar
 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.07.2011  
 




Jörg
Sellmeyer
Mach doch veces que aquí

Außerdem nützt Usted que aquí:
caso @GetDir$("@")=Pfad$ : AddFiles("*.*",h&,1)

nichts, en evtl. una Fehler abzufangen, como Su Programa así más o menos weitermacht. Wenn, entonces una vernünftige IF-Abfrage en el Usted auch una Alternative programmierst. Also una Messagebox "Falscher Pfad" oder algo como.

Usted springst con ChDir en el Ordner rein. Lo kann bien ser, daß dieser dadurch blockiert se y Usted sólo löschen kannst, si otra vez de el Ordner rausgehst: ChDir ".."

Borrar es una alter DOS-Befehl. Sehr effektiv aber auch con Vorsicht a genießen, si uno se no auskennt. Gib en el DOS-Ventana Help /erase una.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
25.07.2011  
 



@Jörg: Yo glaube ¿Quieres decir que deltree en lugar de erase ?! Borrar gibts aber auch y /S ists como deltree -

mein aktuelles XP sabe deltree ("""leider""") no mehr.

@Julian: Einfach después de Deinem ChooseDir$ veces una imprimir getDir$("@") en a schauen si ChooseDir$ el Pfad ändert.

¿Por qué una Expediente/ Ordner se no entfernen lässt... irgend una Prozess llevará a cabo todavía al o Directorio rumwuseln y una Handle halten - vlt. el Explorer el a su oculto thumbs.db klebt oder una AV-Programa oder una Indizierungsdienst oder oder oder... nutze testweise el AddFile.DLL como en el Ejemplo auch veces por external en lugar de por importdll en auch auszuschließen si Yo como vergessen habe una Handle a schließen.
 
25.07.2011  
 



Tippt keiner en UAC?
 
25.07.2011  
 



¿Quieres decir que si el Ordner una otro Benutzer gehört oder el Benutzer kein Lösch-Recht besitzt?
 
25.07.2011  
 




Jörg
Sellmeyer
Sí - meinte natürlich 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)
Außerdem nützt Usted que aquí:
caso @GetDir$("@")=Pfad$ : AddFiles("*.*",h&,1)

nichts, en evtl. una Fehler abzufangen, como Su Programa así más o menos weitermacht. Wenn, entonces una vernünftige IF-Abfrage en el Usted auch una Alternative programmierst. Also una Messagebox "Falscher Pfad" oder algo como.


cls
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$("Verzeichnis wählen:"))

Proc delete_folder_completely

    Parámetros Pfad$
    declarar fehler%,z%,h&
    var addfiles.dll&=ImportDLL("addfiles.dll","")

    mientras que 1

        if DirExists(Pfad$)

            h&=Crear("List", 0)
            Chdir Pfad$

            if @GetDir$("@")=Pfad$

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

                whileloop GetCount(h&)

                    if Left$(GetString$(h&,&bucle-1),Len(Pfad$))=Pfad$

                        if FileExists(GetString$(h&,&bucle-1))

                            Borrar GetString$(h&,&bucle-1)

                            if FileExists(GetString$(h&,&bucle-1))

                                Messagebox("Die Expediente '"+GetString$(h&,&bucle-1)+"' podría no gelöscht voluntad!","ERROR",16)
                                fehler%=fehler%+1

                            Endif

                        Endif

                    Endif

                Endwhile

                clearlist h&
                Chdir Pfad$

                if @GetDir$("@")=Pfad$

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

                    whileloop GetCount(h&),1,-1

                        if Left$(GetString$(h&,&bucle-1),Len(Pfad$))=Pfad$

                            if DirExists(GetString$(h&,&bucle-1))

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

                                if DirExists(GetString$(h&,&bucle-1))

                                    Messagebox("Das Directorio '"+GetString$(h&,&bucle-1)+"' podría no gelöscht voluntad!","ERROR",16)
                                    fehler%=fehler%+1

                                Endif

                            Endif

                        Endif

                    Endwhile

                    if @GetDir$("@")=Pfad$

                        if DirExists(Pfad$)

                            RmDir Pfad$

                            if DirExists(Pfad$)

                                Messagebox("Das Directorio '"+Pfad$+"' podría no gelöscht voluntad!","ERROR",16)
                                fehler%=fehler%+1

                            Endif

                        Endif

                    más

                        Messagebox("Der Pfad '"+Pfad$+"' podría no geöffnet voluntad!","ERROR",16)

                    Endif

                más

                    Messagebox("Der Pfad '"+Pfad$+"' podría no geöffnet voluntad!","ERROR",16)

                Endif

            más

                Messagebox("Der Pfad '"+Pfad$+"' podría no geöffnet voluntad!","ERROR",16)

            Endif

        más

            Messagebox("Der Pfad '"+Pfad$+"' es no vorhanden","ERROR",16)

        Endif

        if fehler%=0

            romper

        más

            z%=Messagebox("Das Löschen des Ordnes '"+Pfad$+"' war no erfolgreich! Wollen Sie lo Wiederholen?","INFO",5+64+256+4096)

            if z%=4

                fehler%=0

            más

                romper

            Endif

        Endif

    Endwhile

    destroywindow(h&)
    FreeDLL addfiles.dll&

ENDPROC


Jörg Sellmeyer (25.07.11)
Usted springst con ChDir en el Ordner rein. Lo kann bien ser, daß dieser dadurch blockiert se y Usted sólo löschen kannst, si otra vez de el Ordner rausgehst: ChDir ".."


Como podría Yo algo como en el código einbeziehen?

IF (25.07.11)
¿Por qué una Expediente/ Ordner se no entfernen lässt... irgend una Prozess llevará a cabo todavía al o Directorio rumwuseln y una Handle halten - vlt. el Explorer el a su oculto thumbs.db klebt oder una AV-Programa oder una Indizierungsdienst


Das Yo ya vermutet! Yo habe deswegen intenta el Ordner freizugeben, el Computer neugestartet, Explorer.exe final. Danach ging lo, como zuvor ebenfalls no! Anschließend Yo encima Unlocker überprüft si una Prozess el Ordner verwendet. Der Sagte me él no en Verwendung es! Nach una más Test des Löschens ging lo otra vez no. Liegt etwa al Quellcode, o. a RmDir? Oder porque XProfan incluso esta Ordner blockiert.

IF (25.07.11)
oder oder oder... nutze testweise el AddFile.DLL como en el Ejemplo auch veces por external en lugar de por importdll en auch auszuschließen si Yo como vergessen habe una Handle a schließen.


Muss Yo el DLL davor todavía iwie einbinden [UseDLL más o menos?]?
 
˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
25.07.2011  
 



Nein, simplemente sólo Externo.
 
25.07.2011  
 




Julian
Schmidt
Über el Aufruf encima Externo kommt wiederum una Fehlermeldung.
Liegt lo vlt daran el Yo, el kompletten Pfad a DLL angeben muss?
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$("Verzeichnis wählen:"))

Proc delete_folder_completely

    Parámetros Pfad$
    declarar fehler%,z%,h&
    'var addfiles.dll&=ImportDLL("addfiles.dll","")

    mientras que 1

        if DirExists(Pfad$)

            h&=Crear("List", 0)
            Chdir Pfad$

            if @GetDir$("@")=Pfad$

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

                whileloop GetCount(h&)

                    if Left$(GetString$(h&,&bucle-1),Len(Pfad$))=Pfad$

                        if FileExists(GetString$(h&,&bucle-1))

                            Borrar GetString$(h&,&bucle-1)

                            if FileExists(GetString$(h&,&bucle-1))

                                Messagebox("Die Expediente '"+GetString$(h&,&bucle-1)+"' podría no gelöscht voluntad!","ERROR",16)
                                fehler%=fehler%+1

                            Endif

                        Endif

                    Endif

                Endwhile

                clearlist h&
                Chdir Pfad$

                if @GetDir$("@")=Pfad$

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

                    whileloop GetCount(h&),1,-1

                        if Left$(GetString$(h&,&bucle-1),Len(Pfad$))=Pfad$

                            if DirExists(GetString$(h&,&bucle-1))

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

                                if DirExists(GetString$(h&,&bucle-1))

                                    Messagebox("Das Directorio '"+GetString$(h&,&bucle-1)+"' podría no gelöscht voluntad!","ERROR",16)
                                    fehler%=fehler%+1

                                Endif

                            Endif

                        Endif

                    Endwhile

                    if @GetDir$("@")=Pfad$

                        if DirExists(Pfad$)

                            RmDir Pfad$

                            if DirExists(Pfad$)

                                Messagebox("Das Directorio '"+Pfad$+"' podría no gelöscht voluntad!","ERROR",16)
                                fehler%=fehler%+1

                            Endif

                        Endif

                    más

                        Messagebox("Der Pfad '"+Pfad$+"' podría no geöffnet voluntad!","ERROR",16)

                    Endif

                más

                    Messagebox("Der Pfad '"+Pfad$+"' podría no geöffnet voluntad!","ERROR",16)

                Endif

            más

                Messagebox("Der Pfad '"+Pfad$+"' podría no geöffnet voluntad!","ERROR",16)

            Endif

        más

            Messagebox("Der Pfad '"+Pfad$+"' es no vorhanden","ERROR",16)

        Endif

        if fehler%=0

            romper

        más

            z%=Messagebox("Das Löschen des Ordnes '"+Pfad$+"' war no erfolgreich! Wollen Sie lo Wiederholen?","INFO",5+64+256+4096)

            if z%=4

                fehler%=0

            más

                romper

            Endif

        Endif

    Endwhile

    destroywindow(h&)
    'FreeDLL addfiles.dll&

ENDPROC

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




Jörg
Sellmeyer

el kompletten Pfad a DLL angeben muss?


Hast Usted lo ya 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)
el kompletten Pfad a DLL angeben muss?


Hast Usted lo ya ausprobiert?


Nein va por desgracia, no.
Def DateiName(1) Substr$(@$(1),-1,"\\")
Def DateiPfad(1) Translate$(@$(1),("\\" + DateiName(@$(1))),"")
delete_folder_completely("C:\\Test")
'delete_folder_completely(ChooseDir$("Verzeichnis wählen:"))

Proc delete_folder_completely

    Parámetros Pfad$
    declarar fehler%,z%,h&
    'var addfiles.dll&=ImportDLL("addfiles.dll","")

    mientras que 1

        if DirExists(Pfad$)

            h&=Crear("List", 0)
            Chdir Pfad$

            if @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&)

                    if Left$(GetString$(h&,&bucle-1),Len(Pfad$))=Pfad$

                        if FileExists(GetString$(h&,&bucle-1))

                            Borrar GetString$(h&,&bucle-1)

                            if FileExists(GetString$(h&,&bucle-1))

                                Messagebox("Die Expediente '"+GetString$(h&,&bucle-1)+"' podría no gelöscht voluntad!","ERROR",16)
                                fehler%=fehler%+1

                            Endif

                        Endif

                    Endif

                Endwhile

                clearlist h&
                Chdir Pfad$

                if @GetDir$("@")=Pfad$

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

                    whileloop GetCount(h&),1,-1

                        if Left$(GetString$(h&,&bucle-1),Len(Pfad$))=Pfad$

                            if DirExists(GetString$(h&,&bucle-1))

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

                                if DirExists(GetString$(h&,&bucle-1))

                                    Messagebox("Das Directorio '"+GetString$(h&,&bucle-1)+"' podría no gelöscht voluntad!","ERROR",16)
                                    fehler%=fehler%+1

                                Endif

                            Endif

                        Endif

                    Endwhile

                    if @GetDir$("@")=Pfad$

                        if DirExists(Pfad$)

                            RmDir Pfad$

                            if DirExists(Pfad$)

                                Messagebox("Das Directorio '"+Pfad$+"' podría no gelöscht voluntad!","ERROR",16)
                                fehler%=fehler%+1

                            Endif

                        Endif

                    más

                        Messagebox("Der Pfad '"+Pfad$+"' podría no geöffnet voluntad!","ERROR",16)

                    Endif

                más

                    Messagebox("Der Pfad '"+Pfad$+"' podría no geöffnet voluntad!","ERROR",16)

                Endif

            más

                Messagebox("Der Pfad '"+Pfad$+"' podría no geöffnet voluntad!","ERROR",16)

            Endif

        más

            Messagebox("Der Pfad '"+Pfad$+"' es no vorhanden","ERROR",16)

        Endif

        if fehler%=0

            romper

        más

            z%=Messagebox("Das Löschen des Ordnes '"+Pfad$+"' war no erfolgreich! Wollen Sie lo Wiederholen?","INFO",5+64+256+4096)

            if z%=4

                fehler%=0

            más

                romper

            Endif

        Endif

    Endwhile

    destroywindow(h&)
    'FreeDLL addfiles.dll&

ENDPROC

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




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

30.797 Views

Untitledvor 0 min.
E.T.22.11.2023
Georg21.01.2021
AndreasS23.12.2018
Klaus Ernst09.01.2018
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie