| |
|
|
- 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 ▲ |
|
|
|
|
« Dieser Contribución wurde como Solución gekennzeichnet. » |
|
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 ▲ |
|
|
|
|
|
| Rekursives AddFiles por XProfans AddFiles-Función oder en AddFiles.Dll ( [...] ) y todos gelisteten Archivos löschen y anschließend una AddDirs (de AddFiles.Dll) y todos Verzeichnisse entfernen. Usted musst siempre su ausgehen el se una Expediente/ Directorio no entfernen lässt. |
|
|
| |
|
|
|
Julian Schmidt | Gracias IF, mein Ver código fuente así funktioniert soweit, a darauf el el Ausgangsordner incluso no gelöscht se. Liegt lo vlt daran el el Explorer oder una otro Prozess esta blockiert. ¿Puede du el Ver código fuente testen?
delete_folder_completely("D:\Test")
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$
AddFiles("*.*",h&,1)
MoveListToHandle(h&)
whileloop GetCount(h&)
Borrar GetString$(h&,&bucle-1)
Endwhile
clearlist h&
Chdir Pfad$
AddDirs("*.*",h&,1)
whileloop GetCount(h&),1,-1
RmDir GetString$(h&,&bucle-1)
Endwhile
destroywindow(h&)
RmDir Pfad$
FreeDLL addfiles.dll&
ENDPROC
|
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 24.07.2011 ▲ |
|
|
|
|
| XProfan 11.2.1.8a.63 Praekompiler [XPSE] Copyright (C) 1998-2010 XProfan.Com, built DE. Expediente: c:\dev\test.xprf Warnung: Unbekannte Escapesequenz en Stringkonstante: "D:\Test" [C]ompile [I]nterpr [L]ink [R]unPrc Run[E]xe [S]ource [H]ilfe XPSE:> |
|
|
| |
|
|
|
Julian Schmidt | IF (24.07.11)
Warnung: Unbekannte Escapesequenz en Stringkonstante: "D:\Test"
Und qué se el genau bedeuten? Ist etwa una Fehler en el Code? |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 24.07.2011 ▲ |
|
|
|
|
Jörg Sellmeyer | Ist sólo el Meckerei de XPSE, daß Usted einfache Backslash en lugar de doppelte verwendest. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 24.07.2011 ▲ |
|
|
|
|
Julian Schmidt | Na entonces, bin Yo beruhigt. Dennoch una Problema. ¿Por qué kommt en el Ver código fuente una Fehlermeldung?
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$
AddFiles("*.*",h&,1)
MoveListToHandle(h&)
whileloop GetCount(h&)
Borrar GetString$(h&,&bucle-1)
Endwhile
clearlist h&
Chdir Pfad$
AddDirs("*.*",h&,1)
whileloop GetCount(h&),1,-1
RmDir GetString$(h&,&bucle-1)
Endwhile
destroywindow(h&)
RmDir Pfad$
FreeDLL addfiles.dll&
ENDPROC
Yo habe sólo el erste Línea geändert!
"delete_folder_completely("D:\Test")" a "delete_folder_completely(ChooseDir$("Verzeichnis wählen:"))"
Nachdem Yo el Línea otra vez abändere funktioniert todos otra vez como zuvor. Alguien una Concepto?
Apéndice: Der Ausgangsordner se desafortunadamente immernoch no gelöscht, incluso si yo el Computer neustarte! |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 24.07.2011 ▲ |
|
|
|
|
| @Jörg: No bastante porque lo hieß auch "Checkst Usted sólo primero selber bevor Usted otro por lo tanto bittest z.B. ihre Festplatte a löschen". |
|
|
| |
|
|
|
| @Julian: Usted debe necesariamente una chdir-Función herstellen el zurückliefert si el Verzeichniswechsel erfolgreich war (z.B. por getDir$("@")) bevor Usted Dateinamen sammelst de Archivos el entonces gelöscht voluntad (debería). ^ ^ |
|
|
| |
|
|
|
Julian Schmidt | So qué en esta Richtung?
delete_folder_completely("C:\\Test")
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&)
Borrar GetString$(h&,&bucle-1)
Endwhile
clearlist h&
Chdir Pfad$
caso @GetDir$("@")=Pfad$ : AddDirs("*.*",h&,1)
whileloop GetCount(h&),1,-1
RmDir GetString$(h&,&bucle-1)
Endwhile
destroywindow(h&)
caso @GetDir$("@")=Pfad$ : RmDir Pfad$
FreeDLL addfiles.dll&
ENDPROC
Julian57 (24.07.11)
Dennoch una Problema. ¿Por qué kommt en el Ver código fuente una Fehlermeldung?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$
AddFiles("*.*",h&,1)
MoveListToHandle(h&)
whileloop GetCount(h&)
Borrar GetString$(h&,&bucle-1)
Endwhile
clearlist h&
Chdir Pfad$
AddDirs("*.*",h&,1)
whileloop GetCount(h&),1,-1
RmDir GetString$(h&,&bucle-1)
Endwhile
destroywindow(h&)
RmDir Pfad$
FreeDLL addfiles.dll&
ENDPROC
Yo habe sólo el erste Línea geändert! "delete_folder_completely("D:\Test")" a "delete_folder_completely(ChooseDir$("Verzeichnis wählen:"))" Nachdem Yo el Línea otra vez abändere funktioniert todos otra vez como zuvor. Alguien una Concepto? Apéndice: Der Ausgangsordner se desafortunadamente immernoch no gelöscht (vollständig geleert, pero no mehr), incluso si yo el Computer Neustarte! |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 25.07.2011 ▲ |
|
|
|
|
ByteAttack | Schon veces con deltree probiert? |
|
|
| |
|
|
|
Thomas Freier | Also, wenn's el Papierkorb ser darf, y no absolut restlos ser se, es en Borrar auch no Fall :
'de el MMJ-Quellcodesammlung (Dietmar Horn)
'Expediente en el Papierkorb mover
'Lauffähig de Profano-Versión 5.0
' PRFellow-Presentación
' Autor: Thomas Hölzer
' Un Expediente en el Papierkorb mover (de Profano 5.0-32)
' Parámetro:
' (1): Voller Pfadname
' (2): 1, si Bestätigungs-Diálogo adecuado voluntad se
' Un Rückgabe <> 0 markiert una Fehler oder User-Abbruch
Def SHFileOperation(1) !"SHELL32","SHFileOperationA"
Declarar SHFO#
Declarar file#
Proc MoveFileToBin
Parámetros file$,confirm%
Declarar flags%, result&
FindFirst$(file$)
Case %IOResult: Volver -1
Let flags%=64
Case confirm%: flags%=80
Dim SHFO#,30
Dim file#,Len(file$)+2
String file#,0=file$
Largo SHFO#,0=GetActiveWindow()
Largo SHFO#,4=3
Largo SHFO#,8=file#
Largo SHFO#,12=0
Word SHFO#,16=flags%
Largo SHFO#,18=0
Largo SHFO#,22=0
Largo SHFO#,26=0
result&=SHFileOperation(SHFO#)
Disponer file#
Disponer SHFO#
Volver result&
ENDPROC
' Ejemplo
Cls
imprimir MoveFileToBin("C:\\TEST\\Test.txt",1)' sólo veces así
imprimir MoveFileToBin("C:\\TEST",1)
waitinput
|
|
|
| |
|
|