VB6: kill

Hallo zusammen

Gerade wollte ich ein kleines Progrämmchen schreiben, dass alle Dateien / Verzeichnisse aus einem Verzeichnis löscht, welches beim aufruf übergeben wird:

Kill Command$ & „*.*“

Leider erhalte ich permanent den Fehler „53“.
Egal ob das Verzeichnis relativ oder absolut angebe.
Auch Kill Command$ funktioniert nicht! :frowning:

viele Grüsse
Peter

PS:
Tipps für Quellen mit hochwertigen Ico Dateien nehme ich ebenfalls gerne… :wink:

…wenn du keine anderen Angaben machst.

Mahlzeit auch!

Gerade wollte ich ein kleines Progrämmchen schreiben, dass
alle Dateien / Verzeichnisse aus einem Verzeichnis löscht,
welches beim aufruf übergeben wird:

Kill Command$ & „*.*“

Wie ist der Code, was wird da ausgeführt? Was übergibst du als Argument?

Leider erhalte ich permanent den Fehler „53“.
Egal ob das Verzeichnis relativ oder absolut angebe.
Auch Kill Command$ funktioniert nicht! :frowning:

Fehler 53 besagt, daß ein Netzwerkpfad nicht gefunden wurde. Übergibst du ein Verzeichnis auf einem Netzlaufwerk?

Gruß

Sancho

Hi Sancho

„Kill“ ist ein Statment von Basic - seit langer, langer Zeit :wink:
Das ist zugleich die einzige Codezeilen die ausgeführt wird.

Wenn ich schreibe, relative und absolute Pfade, mein polygamer Freund, dann meine ich:

A: relativ
„myprog test“
wobei myprog meine VB.EXE Applikation ist und test ein Unterverzeichnis
B: absolut
„myprog c:\test“
wobei myprog meine VB.EXE Applikation ist und test ein Verzeichnis ist.

Fehler 53 besagt übrigens nur, dass er ein FileSystem Objekt wie ein File oder Directory nicht gefunden hat - unabhängig ob Netz
Den Parameter (Verzeichnis das zu leeren ist) wird mit dem Aufruf der VB-APP übergeben und über command$ ausgewertet.

viele Grüsse
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Mahlzeit!

„Kill“ ist ein Statment von Basic - seit langer, langer Zeit
:wink:

Oh,sorry- ich dachte, kill sei der Name deines Programms. Jetzt weiß ich, daß es Myprog heißt :smile:

Das ist zugleich die einzige Codezeilen die ausgeführt wird.

Das wird das Problem sein.

Wenn ich schreibe, relative und absolute Pfade, mein polygamer
Freund, dann meine ich:

A: relativ
„myprog test“
wobei myprog meine VB.EXE Applikation ist und test ein
Unterverzeichnis
B: absolut
„myprog c:\test“
wobei myprog meine VB.EXE Applikation ist und test ein
Verzeichnis ist.

OK. Ich habs jetzt nicht ausprobiert (hab hier kein VB installiert), aber ich nehme an, kill braucht einen Dateinamen als Argument - du gibst aber einen nicht existierende Datei an, nämlich „*.*“.

Die Wildcard-Expansion ist Aufgabe des Kommandointerpreters (bzw. deiner Anwendung, in dem Fall). Kill ruft (vermutlich, s.o.) direkt die Betriebssystem-Routine zum Löschen auf, und die gibt die Fehlermeldung aus.

Fehler 53 besagt übrigens nur, dass er ein FileSystem Objekt
wie ein File oder Directory nicht gefunden hat - unabhängig ob
Netz

Siehe an, man lernt nie aus :smile:

Gruß

Sancho

Hallo Peter!

Kill Command$ & „*.*“
Leider erhalte ich permanent den Fehler „53“.

Das passiert, wenn keine Datei vorhanden ist, d. h. das Verzeichnis (außer möglichen Unterverzeichnissen) leer ist. Da das aber genau das ist, was Du ja willst, kannst Du den Fehler 53 einfach übergehen.

Gruß, Manfred

Mahlzeit,

ich habs mit Access überprüft - meine Vermutung war richtig, dürfte bei VB genauso sein.

Folgende Funktion löscht dir die Verzeichnisse:

Public Function kille\_alles(verz As String) As Integer
On Error GoTo kille\_alles\_fehler
Dim Dateiname As String

Dateiname = Dir(verz & "\*.\*")

Do While Dateiname ""
 If Dateiname "." And Dateiname ".." Then
 Kill verz & "\" & Dateiname
 Dateiname = Dir
 End If
Loop

kille\_alles = 0
Exit Function

kille\_alles\_fehler:
 kille\_alles = Err
 Exit Function
End Function

Gruß

Sancho
P.S. Warum nicht gleich Shell( "del " & Verz ) verwenden? :stuck_out_tongue:

Salü Manfred

Schön wärs !! :frowning:

Im Verzeichnis test sind Verzeichnisse mit Unterverzeichnissen enthalten, die nicht entfert werden *grumelfluchundsch…nochmal*

Dabei kennt Kill Wildcards und kann Verzeichnisse wie auch Dateien löschen…

Langsam gebe ichs auf und übernehme die Idee von Sancho mit Shell und „RD /S /Q“ (XP).

Frustrierte Grüsse
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Salü Peter!

Schön wärs !! :frowning:

Schön ist es.

Im Verzeichnis test sind Verzeichnisse mit Unterverzeichnissen
enthalten, die nicht entfert werden
*grumelfluchundsch…nochmal*

KILL entfernt Dateien. RmDir entfernt Verzeichnisse. Das wirst Du wohl brauchen. Kann aber sein, dass Du hier rekursiv durchlaufen musst, voerher mit KILL die Verzeichnisse leeren und dann mit RMDIR die Dinger entfernen. Ich weiß gerade nicht, ob RMDIR auch nichtleere Verzeichnisse rekursiv löscht. Zur Not schau mal in die API, was die so anbietet. Ist teilweise besser…

Gruß, Manfred

1 Like

Salü Manfred

Du hast es exakt erfasst.

Da ich XP / 2003 „drunter“ habe, setzte ich ein Shell Statment ab, wo ich „RD /s“ ausführe und basta.

viele Grüsse
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]