| |
|
|
- page 1 - |
|
Julian Schmidt | comment peux on un Verzeichnis am elegantesten avec allen Unterverzeichnissen et allem enthaltenen Fichiers effacer? |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 24.07.2011 ▲ |
|
|
|
|
« cette Beitrag wurde comme Solution gekennzeichnet. » |
|
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 ▲ |
|
|
|
|
|
| Rekursives AddFiles per XProfans AddFiles-Funktion ou bien sur qui AddFiles.Dll ( [...] ) et alle gelisteten Fichiers effacer et anschließend un AddDirs (aus AddFiles.Dll) et alle Verzeichnisse entfernen. Du musst toujours en sortir cela sich une Dossier/ Verzeichnis pas entfernen peut. |
|
|
| |
|
|
|
Julian Schmidt | merci IF, mon Voir le texte source so funktioniert soweit, jusqu'à puis cela qui Ausgangsordner selbst pas gelöscht wird. Liegt es vlt daran cela qui Explorer ou bien un anderer Prozess cette blockiert. peux du den Voir le texte source testen?
delete_folder_completely("D:\Test")
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$
AddFiles("*.*",h&,1)
MoveListToHandle(h&)
whileloop GetCount(h&)
Effacer GetString$(h&,&loop-1)
Endwhile
clearlist h&
Chdir Pfad$
AddDirs("*.*",h&,1)
whileloop GetCount(h&),1,-1
RmDir GetString$(h&,&loop-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. Dossier: c:\dev\test.xprf avertissement: Unbekannte Escapesequenz dans 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)
avertissement: Unbekannte Escapesequenz dans Stringkonstante: "D:\Test"
et quoi soll cela oui c'est ca bedeuten? Ist etwa un faute im Code? |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 24.07.2011 ▲ |
|
|
|
|
Jörg Sellmeyer | Ist seulement qui Meckerei de XPSE, qui Du simple Backslash statt doppelte verwendest. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 24.07.2011 ▲ |
|
|
|
|
Julian Schmidt | Na ensuite, suis je beruhigt. toutefois un Problem. pourquoi venez chez dem Voir le texte source une Fehlermeldung?
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$
AddFiles("*.*",h&,1)
MoveListToHandle(h&)
whileloop GetCount(h&)
Effacer GetString$(h&,&loop-1)
Endwhile
clearlist h&
Chdir Pfad$
AddDirs("*.*",h&,1)
whileloop GetCount(h&),1,-1
RmDir GetString$(h&,&loop-1)
Endwhile
destroywindow(h&)
RmDir Pfad$
FreeDLL addfiles.dll&
ENDPROC
j'ai seulement la première la ligne geändert!
"delete_folder_completely("D:\Test")" trop "delete_folder_completely(ChooseDir$(Annuaire choisir:"))"
après que je qui la ligne wieder abändere funktioniert alle wieder comment zuvor. quelqu'un une concept?
Nachtrag: qui Ausgangsordner wird malheureusement immernoch pas gelöscht, selbst si Je l' ordinateur neustarte! |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 24.07.2011 ▲ |
|
|
|
|
| @Jörg: pas entier car es hieß aussi "Checkst Du arrêt erstmal selber bevor Du autre tout autor bittest z.B. ses Festplatte trop löschen". |
|
|
| |
|
|
|
| @Julian: Du devrait absolument une chdir-Funktion herstellen qui zurückliefert si qui Verzeichniswechsel erfolgreich était (z.B. per getDir$("@")) bevor Du Dateinamen sammelst de Fichiers qui ensuite gelöscht volonté (devoir). ^ ^ |
|
|
| |
|
|
|
Julian Schmidt | So quoi dans cet direction?
delete_folder_completely("C:\\Test")
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&)
Effacer GetString$(h&,&loop-1)
Endwhile
clearlist h&
Chdir Pfad$
cas @GETDIR $("@")=Pfad$ : AddDirs("*.*",h&,1)
whileloop GetCount(h&),1,-1
RmDir GetString$(h&,&loop-1)
Endwhile
destroywindow(h&)
cas @GETDIR $("@")=Pfad$ : RmDir Pfad$
FreeDLL addfiles.dll&
ENDPROC
Julian57 (24.07.11)
toutefois un Problem. pourquoi venez chez dem Voir le texte source une Fehlermeldung?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$
AddFiles("*.*",h&,1)
MoveListToHandle(h&)
whileloop GetCount(h&)
Effacer GetString$(h&,&loop-1)
Endwhile
clearlist h&
Chdir Pfad$
AddDirs("*.*",h&,1)
whileloop GetCount(h&),1,-1
RmDir GetString$(h&,&loop-1)
Endwhile
destroywindow(h&)
RmDir Pfad$
FreeDLL addfiles.dll&
ENDPROC
j'ai seulement la première la ligne geändert! "delete_folder_completely("D:\Test")" trop "delete_folder_completely(ChooseDir$(Annuaire choisir:"))" après que je qui la ligne wieder abändere funktioniert alle wieder comment zuvor. quelqu'un une concept? Nachtrag: qui Ausgangsordner wird malheureusement immernoch pas gelöscht (vollständig geleert, mais pas plus), selbst si Je l' ordinateur Neustarte! |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 25.07.2011 ▲ |
|
|
|
|
ByteAttack | déjà la fois avec deltree probiert? |
|
|
| |
|
|
|
Thomas Freier | alors, wenn's qui corbeille à papier son darf, et pas absolu restlos son soll, ist chez Effacer aussi pas qui le cas :
'aus qui MMJ-Quellcodesammlung (Dietmar Horn)
'Dossier dans den corbeille à papier Déplacer
'Lauffähig ab Profan-Version 5.0
' PRFellow-Présentation
' Autor: Thomas Bois
' une Dossier dans den corbeille à papier Déplacer (ab Profan 5.0-32)
' paramètre:
' (1): Voller Pfadname
' (2): 1, si Bestätigungs-Dialog angezeigt volonté soll
' une Rückgabe <> 0 markiert une faute ou bien User-Abbruch
Def SHFileOperation(1) !"SHELL32","SHFileOperationA"
Déclarer SHFO#
Déclarer file#
Proc MoveFileToBin
Paramètres file$,confirm%
Déclarer flags%, result&
$ FindFirst(file$)
Cas %IOResult: Retour -1
Laisser flags%=64
Cas confirm%: flags%=80
Faible SHFO#,30
Faible file#,Len(file$)+2
String file#,0=file$
Long SHFO#,0=GetActiveWindow()
Long SHFO#,4=3
Long SHFO#,8=file#
Long SHFO#,12=0
Word SHFO#,16=flags%
Long SHFO#,18=0
Long SHFO#,22=0
Long SHFO#,26=0
result&=SHFileOperation(SHFO#)
Dispose file#
Dispose SHFO#
Retour result&
ENDPROC
' Beispiel
Cls
imprimer MoveFileToBin("C:\\TEST\\Test.txt",1)' seulement la fois so
imprimer MoveFileToBin("C:\\TEST",1)
waitinput
|
|
|
| |
|
|