Die Vorgeschichte
Ich hatte jüngst die Anfrage, ob man diverse Dateien auf irgendeine Art und Weise in die User-Home-Verzeichnisse kopieren könnte.
Ein Fall für PowerShell.
Also habe ich das Skript entwickelt und mit Dummy-Dateien meine einzelnen Skriptschritte getestet.
An einem nicht mehr nachvollziehbaren Schritt hat das Skript im Zielordner drei Dateien mit dem gleichen Namen wie bereits bestehende Ordner erstellt.
Eigentlich läßt Windows nicht zu, daß es Objekte mit identischem Namen im gleichen Verzeichnis gibt. Windows unterscheidet nicht, wie Linux, veränderte Groß- und Kleinschreibung im Dateinamen. Somit hatte ich einen Ordner „A“, „B“ und „C“ sowie drei verhunzte PDF-Dateien mit Namen „A“, „B“ und „C“, aber ohne „.pdf“, in einem Ordner.
Eine Löschung der Datei schlug fehl.
Da demnächst der Fileserver getauscht werden sollte, habe ich das Problem erstmal nach hinten geschoben. In der Hoffnung, dass sich das Problem durch den Umzug von selbst löst.
Die Realität schlägt zu
Spoiler-Alarm: Natürlich liessen sich die Dateien auf dem neuen Server nicht löschen.
Damit hiess es „Ärmel hochkrempeln und den selbst eingebrockten Mist wegschaufel“.
Eine der Dateien so zu löschen wurde mit einer Fehlermeldung und -code quittiert.
Grundsätzlich ist das schon mal ein Ansatz für eine mögliche Lösung.
„Fehler 0x80070091: Das Verzeichnis ist nicht leer.“
Jede Menge neue Ansätze
Die Trefferliste der Suchergebnisse waren unergiebig. Die TOP 10 Lösungen waren alles Sackgassen.
Die Löschung des Ordners gleichen Namens gelang. Zur Sicherheit wurde dieser Ordner selbstverständlich vorher wegkopiert.
Der Versuch die Datei nun loszuwerden misslang völlig mit der Sinngemäßen Fehlermeldung: „Kann nicht gelöscht werden, da die Datei nicht vorhanden ist.“
Alles wieder auf Anfang.
Die nächsten Versuche brachten mich keinen Schritt weiter.
Eine Unbenennung der Datei resultierte in der Umbenennung des Ordners!
PowerShell fand die Datei nicht, somit schlug die Löschung über diesen Weg flach.
Das Verschieben/ Kopieren der Datei resultierte in der Fehlermeldung, dass man Administratorenrechte für diesen Vorgang benötigen würde.
Die untersuchten Rechte waren grundsätzlich unauffällig, aber sicherheitshalber habe ich den Besitz übernommen und die Rechte neu gesetzt. Der Erfolg war gleich Null.
Irgendwann ist mir aufgefallen, dass die Datei noch Leerzeichen nach dem Dateinamen anzeigte, wenn man sie umbenennen wollte.
Zumindest war es ein neuer Ansatz.
In meinem Hinterkopf war noch der wage Gedanke, dass bei ähnlichen Problemen früher der TotalCommander hilfreich war.
Leider in diesem Fall nicht.
Die Lösung
Letztendlich bin ich bei DelInvFile hängen geblieben. Das habe ich auf dem alten Fileserver installiert, da es keine portable Version davon gibt. Die kostenfrei Version erlaubt drei (!) Aktionen.
Damit liessen sich die drei Dateien anstandslos auf Anhieb löschen.
Die gleiche Aktion am neuen Fileserver und das Problem war Geschichte, auch wenn ich das Problem nicht umfassend verstanden zu haben.