Mein Problem ist schnell erklärt:
Mit MKDIR verz$ kann ich auch auf dem Windows-Laufwerk (meist C:\) ein Verzeichnis (Ordner) erstellen
Es ist aber nicht möglich, das erstellte Verzeichnis zu löschen !
Wo ist da der Trick?
Danke für Hilfe im Voraus
Mein Problem ist schnell erklärt:
Mit MKDIR verz$ kann ich auch auf dem Windows-Laufwerk (meist C:\) ein Verzeichnis (Ordner) erstellen
Es ist aber nicht möglich, das erstellte Verzeichnis zu löschen !
Wo ist da der Trick?
Danke für Hilfe im Voraus
Bei mir geht das auch ohne Admin.
Was sagt denn %IOResult ?
Hast Du in dem Ordner, den Du löschen willst, vielleicht noch Dateien oder andere Ordner drin? Das geht leider nicht. Ein Ordner, der gelöscht werden soll muss leer sein.
Gruß Volkmar
Hast Du in dem Ordner, den Du löschen willst, vielleicht noch Dateien oder andere Ordner drin? Das geht leider nicht. Ein Ordner, der gelöscht werden soll muss leer sein.
Gruß Volkmar
@Volkmar
Wie lange kämpfe ich schon mit Windows und Profan ?
Die Frage ist eine indirekte Beleidigung !
Zumal in meiner Anfrage von einem erstellten Ordner und dessen Löschung die Rede war !
Es ging nicht um das Kopieren oder Umbewegen von Dateien in denn Ordner !
@H.Brill
Werde mich mal schlau machen
Die Frage ist eine indirekte Beleidigung !
Ich nehme das dankend zur Kenntnis. Ich weiß jetzt genau, daß Dir im Gegensatz zu mir niemals Fehler unterlaufen.
Gruß Volkmar
Ich nehme das dankend zur Kenntnis. Ich weiß jetzt genau, daß Dir im Gegensatz zu mir niemals Fehler unterlaufen.
Gruß Volkmar
Volkmar
Es ist mir allerdings schon sehr lange bekannt, dass nicht leere Ordner auch
mit dem Windows-Kontex-Menu "Löschen" nicht zu entfernen sind
Mit dieser Procedur ist es sogar möglich, Ordner MIT Inhalt zu löschen !
Aber nicht auf dem Windows-Laufwerk (meist C:\)!
PROC MEHRFACH_AKTION
Parameters Action$,File$,File2$,noconfirm%,norecycle%
' Parameter 1: Auszuführende Aktion=COPY, DELETE, RENAME, MOVE
' Parameter 2: Quelldatei
' Parameter 3: Zielldatei
' Parameter 4: 0 = User erst fragen, 1= ohne Nachfrage löschen
' Parameter 5: 0 = In Papierkorb verschieben, 1= "endgültig" löschen
Declare FOF_Flag%,Action&,DO%,Fehler&
Declare opstruct#,file#,file2#
DO%=0
IF upper$(Action$)="RENAME"
Action&=4
elseIF upper$(Action$)="COPY"
Action&=2
elseIF upper$(Action$)="MOVE"
Action&=1
elseIF upper$(Action$)="DELETE"
Action&=3
else
messagebox("Diese Funktion ist nicht bekannt!","Aktion wird nicht ausgeführt!",64)
DO%=1
endif
IF DO%=0
Case noconfirm% : noconfirm%=16
CaseNot norecycle% : norecycle%=64
FOF_Flag% = (noconfirm%+norecycle%)
Dim opstruct#,60
Dim file#,(Len(file$)+2)
Dim file2#,(Len(file2$)+2)
String file#,0=(file$+Chr$(0))
String file2#,0=(file2$+Chr$(0))
Long opstruct#,0=%hwnd ' Handle des aufrufenden Fensters
Long opstruct#,4=Action&
Long opstruct#,8=file# ' pfrom : hier der zu löschende Ordner
Long opstruct#,12=file2# ' pto (muß 0 oder eine Bereichvar. mit Zieldateinamen ' z.B. bei Umbenennung sein
Word opstruct#,16=FOF_Flag%
Long opstruct#,18=0 ' Hier steht nach dem Aufruf 1, wenn User abgebrochen hat
Long opstruct#,22=0 ' Unbedingt immer auf Null setzen!
Long opstruct#,26=0 ' Zeiger(Bereich) auf Überschrift des Fortschrittsdialogs
FEHLER&=ShFileOperation(opstruct#)
IF (long(opstruct#,18)=1)
MessageBox("Die Dateioperation wurde abgebrochen!","Operation abgebrochen!",64)
ELSEIF (Fehler& <> 0)
MessageBox("Es ist ein Fehler aufgetreten","ShFileOperation "+str$(Fehler&),16)
ELSEIF fehler&=0
Messagebox("Dateioperation wurde ausgeführt",UPPER$(action$)+"-Funktion erledigt",64)
ENDIF
Dispose file#
Dispose file2#
Dispose opstruct#
ENDIF
ENDPROC
Alles anzeigen
Diese Procedur ist nicht von mir !!!
Irgendwo im Netz mal gefunden und schon ziemlich oft benutzt !
Das, was Volkmar schrieb, wollte ich vorhin auch schon
sagen. Habe allerdings erstmal einen Test durchgeführt.
Ob noch Dateien / Unterordner in einem Ordner sind,
scheint nicht mehr relevant. Das war zu MS-DOS und den
vorherigen Windowszeiten mal anders. Man hatte das
ja auch im DOS-Kurs so gelernt, daß man erst alle Dateien
und Unterordner löschen muß. Außerdem löscht der Explorer
ja auch volle Ordner.
Also, das hier geht :
Cls
mkdir "C:\Tempfiles"
Print %IOResult
Assign #1,"C:\Tempfiles\test.txt"
Rewrite #1
Print #1, "Testzeile"
Close #1
WaitKey
rmdir "C:\Tempfiles"
Print %IoResult
WaitKey
End
Alles anzeigen
Was nun auch sein kann :
Macht mal hinter dem
Close #1
ein
ChDir "C:\Tempfiles"
hin. Das sieht man, daß %IoResult den Code 32 wirft.
Sieht so aus, daß man erst aus dem Ordner rausgehen
oder besser zurückgehen muß, um zu löschen. Ist ja
logisch, daß man nicht den Ast absägt, auf dem man sitzt.
Ist jetzt nur mal so eine Vermutung.
Hab jetzt alles getestet
Bei mir kommt als zweites %IORESULT eine 5
Also schreibgeschützt
Kann diesen Ordner nur mit dem Unlocker wieder entfernen.
Das ist aber nur auf C:\ der Fall
Auf allen anderen LW wird der Ordner gelöscht
Anscheinend stimmen meine Windows-Einstellungen nicht.
Aber wo und was ?
Gottes- und Windows-Wege sind unerforschlich !
Problem gelöst !
Windows war zu genau !
Habe selbst nicht gewußt, dass die Rechte auf C:\ so "scharf" gestellt waren.
Das kommt daher, dass ich selbst nichts auf C:\ schreibe und erst jetzt einen Versuch mit MKDIR und RMDIR gemacht hatte.
Jetzt habe ich alle Berechtigungen frei geschaltet und schon klappt die Sache.
Danke aber an H.Brill und Volkmar beim Versuch, mir zu helfen.
Der Grund:
Aus Sicherheitsgründen dürfen nur System, Administratoren und die Gruppe Authentifizierte Benutzer auf C:\ Ordner erstellen. Der Haken dürfte in deinem Programm bei der Gruppe Authentifizierte Benutzer liegen. Die ist scheinbar in deinem Programm nicht aktiv oder bei den Rechten auf C:\ nicht eingetragen. Da die Kommandozeile bei dir funktioniert, gehe ich von dem zweiten aus.
Meine Fragen dazu:
Ich teste selbst mal und melde mich.
Der Grund:
Aus Sicherheitsgründen dürfen nur System, Administratoren und die Gruppe Authentifizierte Benutzer auf C:\ Ordner erstellen. Der Haken dürfte in deinem Programm bei der Gruppe Authentifizierte Benutzer liegen. Die ist scheinbar in deinem Programm nicht aktiv oder bei den Rechten auf C:\ nicht eingetragen. Da die Kommandozeile bei dir funktioniert, gehe ich von dem zweiten aus.Meine Fragen dazu:
- Compiliertes Programm (EXE) oder im Interpreter?
- Welches Manifest wird genutzt - wird eines genutzt?
- Welche Gruppen sind im Token des laufenden Programms aktiv?
Ich teste selbst mal und melde mich.
Andreas
Der Haken bei Authentifizierte Benutzer wurde gesetzt und alles ist im "grünen Bereich"
Danke für dein Angebot.
War aber eigene Blödheit
Werde aber euch bestimmt noch öfter "auf den Senkel" gehen.
Hab mir zur Aufgabe gemacht, eine 2-Fenster-Dateiverwaltung NUR mit reinem XProfan zu schreiben
Hab ja schon eine Verwaltung unter Benutzung der phantastischen Listview.dll von Frank Abbing.
Jetzt will ich das Gleiche mit reinem XProfan schreiben.
Schau'n mer mal
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!