Ich möchte auf mehreren internen und externen Festplatten Dateien die ein gewisses alter überschritten haben löschen.
// Deklaration
dim DirC as new DirectoryInfo("C:\Test") // Interne Festplatte dim DirX as new DirectoryInfo("X:\Test") // Externe Festplatte dim DatC as FileInfo() = DirC.GetFiles dim DatX as FileInfo() = DirX.GetFiles dim FileC as FileInfo dim FileX as FileInfo
// Alle Files in C:\Test auswerten
for each FileC in DatC // Kontrolle auf Datum und evtl. löschen next FileC
Bis hierhin läuft alles wunderbar, die Files werden kontrolliert und bei Bedarf gelöscht. Dann mache ich dasselbe für die externe Festplatte:
// Alle Files in X:\Test auswerten
for each FileX in DatX // Kontrolle auf Datum und evtl. löschen next FileX
// Weitere Befehle...
Die Schleife wird gar nicht ausgeführt. Im Debugger sehe ich, dass die "for each" - Zeile ausgewertet wird, und dann direkt zu den weiteren Befehlen gesprungen wird. Es scheint also, dass es gar keine FileX in DatX gibt, was aber ganz bestimmt falsch ist. Kann es sein, dass Files einer externen Festplatte nicht abgefüllt werden? Wenn ja, was kannnich dagegen tun?
Benötigt Deine App den Admin-Modus? Wenn ja - ist die Externe Festplatte auch sichtbar / ansprechbar, wenn Du eine Kommandozeile im Admin-Modus verwendest?
Admin sein, und mit Admin-berechtigungen starten sind zwei verschiedene Dinge ab Win Vista. Genauer gesagt laufen Applikationen die vom Admin gestartet werden in einer anderen Session als Applikationen die vom Admin im Admin-Modus gestartet werden. Um beim Beispiel Kommandozeile zu bleiben: Es ist ein Unterschied, ob der Admin die CMD.EXE aufruft, oder auf die CMD.EXE mit der rechten Maustaste draufklickt und "Als Administrator ausführen" klickt.
OK, rechte Maustaste auf Cmd.exe, als Administrator ausführen. DOS-Fenster geht auf. Dir x: Enter Alle Dateien werden angezeigt. Scheint also alles zu klappen, nur mein Prg will nicht...
Weiss hier wirklich keiner Rat? Vielleicht gibt es ja auch einen alternativen Weg? Über DOS? Leider gibt es keine "DEL *.* WHERE Datum < ...." OK, es gäbe den Weg mit XCOPY die Dateien zu verschieben und dann am neuen Ort zu löschen. Aber das scheint mit doch wirklich "etwas zu Fuss" zu sein...
Hast du mal im Eventlog von Windows geschaut ob sich dort etwas findet, was beispielsweise doch auf ein Berechtigungsproblem hindeuten könnte? Btw. welches Betriebssytem verwendest du?
Im Eventlog finde ich nichts aufschlussreiches. Zudem: Müsste bei einem Berechtigngsproblem nicht eine Ausnahme (in meinem Program) auftreten? Ich verwende Windows 7 32-Bit Professional.
Ja, Festplatte ist Sicht- und Ansprechbar.