Forum | | | | - 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. |
| | | | |
| | 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? |
| | | ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 25.07.2011 ▲ |
| |
| | Jörg Sellmeyer | Mach doch la fois que voici
Aussi nützt Dir que voici:
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. |
| | | | |
| | | | | | | |
| | | Du meinst si qui Dossier einem anderen Benutzer est ou bien qui Benutzer ne...aucune Lösch-droite besitzt? |
| | | | |
| | 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: 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. |
| | | | |
| | 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)
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épondreOptions du sujet | 30.888 Views |
Themeninformationencet Thema hat 8 participant: |