Ankündigung

Einklappen
Keine Ankündigung bisher.

Alle Verzeichnise löschen die..

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • dsmcg
    hat ein Thema erstellt Alle Verzeichnise löschen die...

    Alle Verzeichnise löschen die..

    einen bestimmen anfang haben bsp:

    Ordnerstruktur:
    dir_1
    dir_2
    dir_3
    dir_4

    Das Script soll jetzt einfach alle Ordner löschen die mit "dir" beginnen.

    Was für eine Schlaufe würdet ihr am besten einsetzen?
    Hat jemand einen Codeschnippsel, oder ein Beispiel auf lager?

  • dsmcg
    antwortet
    joa danke, hatte ich auch versucht, habs jetzt trotzdem anderst gelöst (Ansatz siehe früehere posts)

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Um alle Verzeichnisse und Dateien zu ermitteln, die mit z.B. Peter anfangen, kannst du wunderbar glob() benutzen.

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Na also, du hast ja schon was.
    Mit regulären Ausdrücken kannst du prüfen, ob ein übergebener Ordnername auf das angegebene Muster passt.

    Beispiel:
    PHP-Code:
    <?php
    $username 
    'dsmcg';
    if (
    preg_match('/^'.convertRegEx($username).'(.*)$/'$dirName)) {
      
    // ordner heißt zum Beispiel 'dsmcgabc' oder 'dsmcg_bilder' ...
    } else {
      
    // ne der Ordner fängt nicht so an
    }
    ?>
    Die Funktion convertRegEx() musst du selber schreiben. Sie müsste jetzt noch alle Zeichen in $username escapen, die reservierte Zeichen bei regulären Ausdrücken sind, also
    ( ) . - * + / \ [ ] ^ $ ? |
    mehr fallen mir spontan nicht ein.

    Vorausgesetzt, diese Zeichen kommen überhaupt in einem Usernamen vor.

    Einen Kommentar schreiben:


  • dsmcg
    antwortet
    um jeden Ordner durchzugehen habe ich jetzt so gelöst:
    PHP-Code:
    <?php
             
    while($dir readdir($handle)){
                 if(
    is_dir($dir) && substr($dir,0,3)==$praefix){
                     
    //funktionsaufruf
                 
    }
             }    

    ?>
    trotzdem danke für eure hilfe

    Einen Kommentar schreiben:


  • dsmcg
    antwortet
    also um Dateien aus einem fix bestimmen Ordner zu löschen (und danach auch den Ordner zu löschen habe ich folgendes:
    PHP-Code:
    <?php
    function delDir($dirName) {
       if(empty(
    $dirName)) {
           return;
       }
       if(
    file_exists($dirName)) {
           
    $dir dir($dirName);
           while(
    $file $dir->read()) {
               if(
    $file != '.' && $file != '..') {
                   if(
    is_dir($dirName.'/'.$file)) {
                       
    delDir($dirName.'/'.$file);
                   } else {
                       @
    unlink($dirName.'/'.$file) or die('File '.$dirName.'/'.$file.' couldn\'t be deleted!');
                   }
               }
           }
           @
    rmdir($dirName.'/'.$file) or die('Folder '.$dirName.'/'.$file.' couldn\'t be deleted!');
       } else {
           echo 
    'Folder "[b]'.$dirName.'[/b]" doesn\'t exist.';
       }
    }
    ?>
    Das funktioniert auch, nur leider möchte ich nicht einen fix bestimmten Ordner löschen sondern alle die halt mit etwas fixes beginnne und der hintere Teil "dynamisch" ist und aus der DB gelesen werden kann..

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Zitat von dsmcg
    [..] das er einfach mal alle mit dem gleichen Anfang löschen muss, das heisst es muss in etwa so aussehen das er einfach die Löschfunktion jedesmal aufruft und immer mit einem anderen Ende ^o)

    kann man bei pfadangaben sowas wie * benutzen?

    Irgendwie versteht ihr mein Problem nicht ganz...

    ich möchte ja nicht wissen wie ich alle Dateien aus einem Ordner lösche..
    1.) Doch möchtest du wissen, hättest du dir die Mühe gemacht zu lesen, dass Verzeichnisse die man löschen möchte leer sein müssen, wüsstest du das
    2.) Stimmt ich versteh dich nicht, du kannst mit dem Codeschnipsel von phpfan ein bisschen experimentieren und mit den von mir genannten Funktionen ergänzen. Geh einfach logisch durch was die Funktion macht.
    3.) Ganz und garnicht verstehe ich, wieso jemand wie du, der eigentlich keine Ahnung davon hat, mit einer so wichtigen Aufgabe wie dem Löschen von Ordnern (am besten mit Wildcard-Zeichen, dann auch noch rekursiv) beauftragt wird. Diese Wildcards musst du übrigens selbst programmieren.
    4.) Ich hab eh den Eindruck du willst gleich ne Komplettlösung. Die gibts hier nicht!

    Einen Kommentar schreiben:


  • dsmcg
    antwortet
    ja ok, wenn ich das jetzt mache, oder den Link von phpfan benutze, wird der ja dann auch gelöscht (noch nicht getestet) mein Problem ist es aber das er einfach mal alle mit dem gleichen Anfang löschen muss, das heisst es muss in etwa so aussehen das er einfach die Löschfunktion jedesmal aufruft und immer mit einem anderen Ende ^o)

    kann man bei pfadangaben sowas wie * benutzen?

    Irgendwie versteht ihr mein Problem nicht ganz...

    ich möchte ja nicht wissen wie ich alle Dateien aus einem Ordner lösche..

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Guckst du: http://www.phptt.de/showschnipsel.php?kat=15&id=30

    Gruß
    phpfan

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Eigentlich solltest du dann wissen wie die Ordner heißen, hast sie ja schließlich selbst angelegt. Als letzten Hinweis noch: Ich hoffe wenn User 'Peter' sich abmeldet werden nicht auch die Ordner von 'Peter_2' gelöscht.

    OK zum Problem: such einfach nach Rekursion hier in der Forensuche oder in Google "php rekursion verzeichnis auslesen". Statt der Auflistung oder Speicherung der Dateien oder Ordnern löscht du den Ordner einfach. Zum selberbauen brauchste wohl die Funktionen:

    opendir()
    readdir()
    is_dir()
    unlink() // Datei löschen
    rmdir() // "Das Verzeichnis muss leer sein und die relevanten Rechte müssen erteilt sein."
    closedir()

    Einen Kommentar schreiben:


  • dsmcg
    antwortet
    hm warum, es geht drum das wenn man einen bestimmten user aus der DB löscht alle User die den gleichen "userpreafix"(spalte in der DB) haben auch gelöscht werden (funktioniert auch) jetzt müssen halt alle Ordner gelöscht werden die mit der gleiche Präfix beginnen.

    Ich denke die obere Erklärung reicht aus.. man muss ja nicht is Detail...

    haste vileicht ein codeschnippsel auf Lager das die Verzeichnise Löschen würde? (auch wenn sie voll sind)

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Schlaufe hehe.
    Das ganze nennt sich Rekursion. Meistens liest man damit Verzeichnisstämme aus, kannst aber statt auslesen natürlich auch löschen.
    Aber warum möchtest du die löschen, Verzeichnisse löschen kann sehr heikel sein, wenn dir jemand die Variable mit dem zu löschenden Pfad-Muster ändert...

    Einen Kommentar schreiben:

Lädt...
X