Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Demian am 13.07.06 - 19:20:22

Titel: Dateien löschen
Beitrag von: Demian am 13.07.06 - 19:20:22
Hallo alle zusammen,

Ich habe mir einen Agenten geschrieben, der aus einer Exceltabelle ein bestimmtes Blatt in eine neue Tabelle kopiert, in einem selbst angelegten "Temp-Ordner"speichert, und dann als Anhang in einer Mail versendet.

Jetzt möchte ich nach dem Versenden alle Dateien in dem Temp Ordner löschen. In Excel ging das mit: kill "C:\Musterordner\" & "*.*"

In Notes sacht er mir dann aber Path/File access Error

Woran liegt das? Bzw. noch viel wichtiger: Wie kann ich die Dateien löschen?


Gruß
Demian
Titel: Re: Dateien löschen
Beitrag von: koehlerbv am 13.07.06 - 19:42:24
Ich befürchte, das ist kein Notes-Problem, sondern eines von Windows bzw. anderen Programmen: Eines oder mehrere von denen hat wohl im Temp-Ordner noch ein File im Zugriff. Gerade das "*.*" funktioniert ja in der Regel auch nicht aus dem Windows-Explorer.

Bernhard
Titel: Re: Dateien löschen
Beitrag von: Glombi am 13.07.06 - 19:46:24
Erzeugst Du die Datei in Notes mt Script?

Falls ja, musst Du die vor dem killen mit Close ... schließen.

Andreas
Titel: Re: Dateien löschen
Beitrag von: Demian am 14.07.06 - 11:01:22
Hallo ihr beiden,

Hier mal ein Ausschnitt des Codes wie er in Excel war:
    ....
    ActiveWorkbook.Close
    mail.display
    mail.send
    ChDir pfad
    Kill "*.*"
    ....

Hat bisher immer funktioniert. Also kann es ja eigentlich kein "Windows-Problem" sein, oder? Zumal, wenn ich die Datei explicit im Kill angebe klappts (siehe unten).

Die Datei wird per Script erzeugt, und auch vor dem Kill wieder geschlossen:

Function ListeÖffnen
   On Error Goto Fehler   
   
   Monatsabfrage   
   Set ex = getobject(,"Excel.Application")
   
Weiter:
   ex.visible = False
   ex.workbooks.open "H:\Personal\Personalabteilung\Geburtstage.xls"
   ex.sheets(Monat).select
   ex.ActiveSheet.Copy  'Kopieren der aktuellen Tabelle in eine neue Arbeitsmappe
   ex.workbooks("Geburtstage.xls").close
   
   
   ex.activeworkbook.saveas "H:\Personal\Personalabteilung\temp\" & ex.ActiveSheet.Range("a1").Value   'Speichern der neuen Mappe
   ex.activeworkbook.close   
   ex.visible = True
   Set ex = Nothing
   Exit Function
   
Fehler:
   If Err() = 208 Then
      Set ex = createobject("Excel.Application")
      Goto weiter
   Else
      Msgbox Err() & " " & Str(Err) & ": " & Error$
   End If   
   
End Function


Gelöscht wird hier:

Set obj = item.EmbedObject(EMBED_ATTACHMENT,"","H:\Personal\Personalabteilung\temp\Geburtstagsliste " & Monat & ".xls")
   Kill "H:\Personal\Personalabteilung\temp\Geburtstagsliste "  & Monat & ".xls"


Bin jetzt vorerst so vorgegangen, dass ich nur die erstellte Datei wieder lösche. Das klappt auch. Aber um auf Nummer sicher zu gehen, würde ich gerne alle Dateien löschen.

Den Umweg über mkdir und rmdir würde ich hier sehr ungern gehen :)

Gruß
Demian
Titel: Re: Dateien löschen
Beitrag von: DerAndre am 14.07.06 - 11:07:29
Ich Verweise Dich nochmal auf Bernhard...

Schonmal versucht manuell Deinen Temp-Ordner zu löschen?
Das klappt meistens auch nicht, weil, wie Bernhard schon sagte, diverse Programme Ihre Finger da drauf haben.

André
Titel: Re: Dateien löschen
Beitrag von: Demian am 15.07.06 - 13:19:02
Hallo,

es handelt sich hier ja nicht um den Windows Temp-Ordner. Es ist ein ganz normaler Ordner, den ich einfach temp genannt habe. Insofern können eigentlich keine anderen Programme ihre Finger drauf haben.

Und wenn dem so wäre, dürfte sich die Datei ja auch bei expliciter Namensangabe nicht löschen lassen. Das tut sie aber.

Gruß
Demian
Titel: Re: Dateien löschen
Beitrag von: koehlerbv am 15.07.06 - 14:07:07
Irgendwie verwendest Du aber auch unterschiedliche Pfadangaben. Einmal heisst es
   ex.workbooks.open "H:\Personal\Personalabteilung\Geburtstage.xls"

Dann aber
   Kill "H:\Personal\Personalabteilung\temp\Geburtstagsliste "  & Monat & ".xls"

So kann das dann auch nichts werden - wenn das genauso in Deinem Code stehen würde.

Bernhard
Titel: Re: Dateien löschen
Beitrag von: LN4ever am 15.07.06 - 16:23:39
Aus der Hilfe (zur Funktion Dir) - leicht abgewandelt für deinen Fall:

pathName$ = "H:\Personal\Personalabteilung\temp\*.*"
fileName$ = Dir$(pathName$, 0)
Do While fileName$ <> ""
   Kill fileName$
   fileName$ = Dir$()
Loop
Titel: Re: Dateien löschen
Beitrag von: Demian am 18.07.06 - 14:33:03
Hallo LN4ever,

vielen Dank für deinen Tip.

Es leuchtet mir zwar nicht ganz ein, warum beim "Dir" das "*.*" funktioniert und beim "kill" nicht, aber es funktioniert einwandfrei. Es werden kommentarlos alle Dateien gelöscht.

Vielen Dank.

Gruß
Demian