Ankündigung

Einklappen
Keine Ankündigung bisher.

Verzeichnisse löschen

Einklappen

Neue Werbung 2019

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

  • Verzeichnisse löschen

    Hallo,

    kann mir bitte jemand helfen?

    Ich möchte in einem Verzeichnis ($path)

    • alle leeren und nichtleeren Verzeichnisse
    • alle leeren und nichtleeren Unterverzeichnisse

    löschen,

    jedoch nicht
    die Files im Verzeichnis ($path)


  • #2
    schon angefangen dir irgendwas zu überlegen, den fertigen code werd ich sicher ned posten
    mfg Floh

    Programmers don't die, they GOSUB without RETURN

    Kommentar


    • #3
      verstehe ich nur teilweise...

      Als Grundlage habe ich sämtliche Beispielskripts von http://www.php.net/manual/en/function.rmdir.php probiert, jedoch nie mit dem von mir gewünschten Ergebnis.

      Es werden meistens auch die Files gelöscht, die nicht gelöscht werden sollen.

      Kommentar


      • #4
        Wie viele Verzeichnisebenen hast du denn?
        mfg RudiS

        Kommentar


        • #5
          Hallo,

          dies steht leider nicht fest, da FTP-User ggf. auch mal Verzeichnisse anlegen.
          Ich denke, es ist ausreichend Verzeichnisse mit deren Unterverz. zu löschen.
          Sollte es tatsächlich mal vorkommen, dass einer so frech ist und erstellt 3 Ebenen, dann muss ich es eben per hand löschen.

          Es geht darum, dass FTP-User Dateien hoch und runter laden, mein Skript aber "vergessene" Files nach einer bestimmten Zeit entfernt. Zzgl sollen eben grundsätzlich ALLE Verzeichnisse mit allem Inhalt gelöscht werden.

          Kommentar


          • #6
            Also hier der Code für dich:
            Code:
            <?php
              error_reporting(E_ALL);
            
              // loescht alle Dateien, die nicht im Hauptverzeichnis sind, auch in weiteren Unterverzeichnisen:
              function dateien_loeschen($pfad)
               {
                // oeffnet das mitgegebene Verzeichnis:
                if ($ver = opendir($pfad))
                 {
                  // solange neue Dateien/Verzeichnise ausgelesen werden koennen:
                  while ($datei = readdir($ver))
                   {
                    // falls solche Dateien auftreten, dann diese ueberspringen:
                    if ($datei == '.' OR $datei == '..') continue;
                    // wenn die Datei ein Verzeichnis, dann die Funktion rekursiv aufrufen:
                    if (is_dir($pfad.'/'.$datei))
                     {
                      dateien_loeschen($pfad.'/'.$datei);
                     }
                     // wenn die Datei eine Datei ist und sie nicht im Hauptverzeichnis ('.') ist, dann diese loeschen:
                     elseif (is_file($pfad.'/'.$datei) AND $pfad != '.')
                     {
                      unlink($pfad.'/'.$datei); // Datei loeschen
                     }
                   }
                  closedir($ver); // Verzeichnis wieder schliessen
                 }
               }
            
              // loescht alle, nun leere, Verzeichnise:
              function verzeichnise_loeschen($pfad)
               {
                // oeffnet das mitgegebene Verzeichnis:
                if ($ver = opendir($pfad))
                 {
                  // solange neue Dateien/Verzeichnise ausgelesen werden koennen:
                  while ($datei = readdir($ver))
                   {
                    // falls solche Dateien auftreten, dann diese ueberspringen:
                    if ($datei == '.' OR $datei == '..') continue;
                    // wenn die Datei ein Verzeichnis, dann dieses loeschen:
                    if (is_dir($pfad.'/'.$datei))
                     {
                      // falls das loeschen nicht erfolreich war, weil es z.B. nicht leer war, dann die Funktion rekursiv aufrufen:
                      if (!@rmdir($pfad.'/'.$datei))
                       {
                        verzeichnise_loeschen($pfad.'/'.$datei);
                       }
                     }
                   }
                  closedir($ver); // Verzeichnis wieder schliessen
                 }
               }
            
              // Dateien loeschen:
              dateien_loeschen('.');
              // Order loeschen; $i < Anzahl der Ebenen:
              for ($i = 0; $i < 10; $i++)
               {
                verzeichnise_loeschen('.');
               }
            
             ?>
            Ich bin zwar nicht ganz damit zufrieden, vor allem nicht mit der for-Schleife, aber es geht. Bei $i < 10 musst du für 10 die Anzahl der maximal gelöschten Ebenen eingeben. Ich würde es bei 10 lassen, denn wer legt schon 10 Unterverzeichnise an.
            Du musst allerdings die Schreibrechte für alle Nutzer festlegen, also 666, sonst kannst du die Dateien nicht loeschen, z.B im FTP-Programm. Ich hab zwar mit chmod() versucht die Rechte zu ändern, aber da gibt er mir die Fehlermeldung auf nicht genug Rechte aus.
            Ich hoffe ich konnte dir helfen, bei weiteren Fragen helfe ich gerne.
            mfg RudiS

            Kommentar


            • #7
              Hallo RudiS,

              vielen Dank!
              Damit funktioniert es gut, solange die Rechte bestehen, aber mir ist erst mal sehr geholfen.
              Besonderen Dank wegen den zahlreichen deutschen Kommentaren, was die Sache für einen Anfänger leichter macht.

              @Ashergul:
              Genau so wie RudiS es anstellte habe ich mir eine brauchbare Hilfe in einem Anfänger-Forum vorgestellt.

              Kommentar


              • #8
                Zitat von ikael
                @Ashergul:
                Genau so wie RudiS es anstellte habe ich mir eine brauchbare Hilfe in einem Anfänger-Forum vorgestellt.
                Falsch!

                Im Forum gibt es Hilfe zur Selbsthilfe aber dies ist keine Gratis-Skript-Fabrik!
                Aufstrebend, kompetent und werbefrei.
                www.developers-guide.net

                Kommentar


                • #9
                  Zitat von ikael
                  Genau so wie RudiS es anstellte habe ich mir eine brauchbare Hilfe in einem Anfänger-Forum vorgestellt.
                  Sag doch gleich, daß Du nicht programmieren lernen willst sondern nur einen Programmierer, der Dir die Scripte liefert.

                  Kommentar


                  • #10
                    @ikael:
                    wenn du ein fertiges script haben willst, dann kannst du das so machen wie viele andere auch, rufst bei mir im büro an und lässt dir ein angebot stellen, intressierten helfe ich immer gerne. aber ich setz mich ned für wildfremde hin und code weil sie sich einbilden sie hätten gerne was gratis
                    mfg Floh

                    Programmers don't die, they GOSUB without RETURN

                    Kommentar


                    • #11
                      Also jetzt muss ich ihn mal verteidigen. Normalerweise liefer ich auch keine fertigen Skripte, aber da es mich erstens auch interesiert hat, und da es doch ein recht kompliziertes Thema ist, hab ich ihm halt den Code gegeben. Ich hab ihn aber wie ihr seht mit Kommentaren gespickt, so das er leicht erkennen kann was was tut und er daraus etwas lernen kann.
                      mfg RudiS

                      Kommentar


                      • #12
                        Hallo,

                        mit dieser Löschfunktion, welche scheinbar für einige von euch ein komplexes Skript darstellt, möchte ich ein von mir selbst geschriebenes Skript praktikabel erweitern. Zugegeben: Ich bin kein professioneller Programmierer sondern komme „nur“ aus der Hobbyecke, jedoch habe ich Kenntnisse in diversen Programmiersprachen die ich für mich und auch für andere bisher oft einsetzte. Ich bastle mir halt gerne etwas selbst zusammen, aber wenn es mal nicht so klappen will wie es soll, frage ich gerne auch mal nach.
                        Was gibt es da besseres als ein Forum?!

                        An dieser Stelle möchte ich mich aber freundlichst verabschieden, denn ich habe mich in der Adresse geirrt.
                        Gute Besserung!

                        @Administrator: Bitte diesen Account löschen, er wird von mir nicht mehr genutzt.
                        EDIT: ooops, Accountlöschfunktion im Profil, fein fein... sorry, ich nutze sie sofort


                        PS. @RudiS: jetzt muss ich mich schon wieder bei dir bedanken. Es ist zwar das erste Mal dass mich jemand in einem Forum verteidigen muss, aber man lernt ja nie aus.
                        Dankeschön, und noch mal Danke für deine Hilfe, denn ich kann wirklich eine Menge mit den Kommentaren anfangen.

                        Kommentar

                        Lädt...
                        X