Sonntag, 12. September 2010

Kleinigkeiten: Alte Dateien löschen

Manchmal sind es Kleinigkeiten die man sich so als Beitrag aufheben möchte. Nichts neuartiges oder aufregendes - nur eine Gedächtnisstütze.

Wer kennt das nicht:
Man hat einen Ordner voll mit Dateien die weiterbearbeitet werden. Manchmal bleiben einige davon übrig weil sie fehlerhaft sind oder bestimmten Kriterien nicht entsprechen: Die klassische "die guten ins Töpfchen, die schlechten ins Kröpfchen"-Konstellation.

Ein sofortiges Löschen der übriggebliebenen "schlechten" Dateien verursacht immer ein gewisses Unbehagen, es könnte ja noch etwas dabei sein, was man noch benötigt. Andererseits möchte man aber keine ausgefeilte Technik und Verwaltung aufsetzen.

Zeit für eine einfache Funktion, die nichts anderes macht, als übriggebliebene Dateien umzubenennen und schließlich nach mehreren Aufrufen löscht, hier beim dritten. Dazu werden in jedem Durchlauf die Dateien nach einem festen Muster umbenannt (von .txt nach .old zu .die) und schließlich in einem Durchlauf gelöscht (alle Dateien, die die blumige Endung ".die" haben).
SortiereAus('d:/test');

function SortiereAus($Ordner)
{
    //Dateien mit der Endung ".die" werden geloescht
    foreach ( glob($Ordner.'/*.die') as $Datei)
    {
        unlink($Datei);
    };

    //.old-Dateien werden zu .die umbenannt
    foreach ( glob($Ordner.'/*.[oO][lL][dD]') as $Datei)
    {
        $NeuerDateiName = str_ireplace('.old', '.die', $Datei);
        rename ($Datei, $NeuerDateiName);
    };

    //Umbenennen falls Datei ein bestimmtes Merkmal nicht hat
    foreach ( glob($Ordner.'/*.[xX][mM][lL]') as $Datei)
    {
            $NeuerDateiName = str_ireplace('.xml', '.old', $Datei);
            rename ($Datei, $NeuerDateiName);
    };
}
Die Funktion ist statisch und "barebone". Es kann sinnvoll sein der Funktion weitere Merkmale zu übergeben um Dateien beispielsweise auch inhaltlich zu überprüfen. Dann macht es auch schon mehr Sinn eine Klasse daraus zu basteln, den Code etwas eleganter zu gestalten indem man mit einem Ordnerdurchlauf auskommt und weitere Funktionen zu integrieren, beispielsweise ein Rollback oder variable Löschstufen.

Mal sehen ob des abends mal ein kurzer Moment dafür übrig ist...

Keine Kommentare:

Kommentar veröffentlichen