Dateinamen rekursiv fortlaufend nummerieren

dochamburg

Mitglied
Salvete!

Ich habe folgendes für euch vielleicht recht einfaches Problem:

Ich habe ein Script gebastelt, welches rekursiv alle Dateinamen in einem Verzeichnis umbenennt.

PHP:
$handle=opendir ('007203/128x96_95/');
echo "Verzeichnis-Handle: $handle <br>";
echo "Dateien:\n";

while ( $file = readdir ( $handle ) ) {
if( $file == "." or $file == "..") {
    }else{
     if ( rename( "007203/128x96_95/".$file, "007203/128x96_95/clipa".$file ) ) {
         echo "Datei $file nicht gefunden <br>";
         } else {
           echo "Datei $file gefunden <br>";
           }
   }
} closedir( $handle );
Dies Script fügt leider nur die Zeichenfolge "clipa" zum Dateinamen vorne an, d.h die Dateien
Code:
7203_02_128x96_95.3gp
7203_02_128x96_95_(1).3gp
sehen danach so aus
Code:
clipa7203_02_128x96_95.3gp
clipa7203_02_128x96_95_(1).3gp
Nun möchte ich im zweiten Schritt, dass die Dateien fortlaufend durchnummeriert und umbenannt werden, dass sie nachher wie folgt heißen:

Code:
clipa001.3gp
clipa002.3gp
usw.

wer kann mir da helfen?

Vielen Dank vorab!

dochamburg
 
Hi, also wenns immer .3gp sind könntest du es so machen:
PHP:
$handle=opendir ('007203/128x96_95/');
echo "Verzeichnis-Handle: $handle <br>";
echo "Dateien:\n";
$zaehler = 1;
while ( $file = readdir ( $handle ) ) {
if( $file == "." or $file == "..") {
    }else{
     if ( rename( "007203/128x96_95/".$file, "007203/128x96_95/clipa".$zaehler.".3gp" ) ) {
         echo "Datei $file nicht gefunden <br>";
         } else {
           echo "Datei $file gefunden <br>";
           }
   }
   $zaehler++;
} closedir( $handle );
edit: Evtl. noch mit str_pad($zaehler, 3, "0", STR_PAD_LEFT); erweitern, damit die Nuller aufgefüllt werden!
 
Zuletzt bearbeitet:
Dank für die schnelle Antwort.

Es sind immer .3gp-Dateien. Allerdings heißen die Dateien nach Deiner Methode jetzt wie folgt:
Code:
clipa1.3gp
clipa4.3gp
Es wird also nicht forlaufend nummeriert, sondern erste Datei heißt clipa1.3gp, die zweite clipa4.3gp (!).

So soll es natürlich nicht sein...

Gruss,


dochamburg
 
Oh, jo klar, weil bei "." und ".." auch mit hochgezählt wird ;)
PHP:
$handle=opendir ('007203/128x96_95/');
echo "Verzeichnis-Handle: $handle <br>";
echo "Dateien:\n";
$zaehler = 1;
while ( $file = readdir ( $handle ) ) {
if( $file == "." or $file == "..") {
    }else{
     if ( rename( "007203/128x96_95/".$file, "007203/128x96_95/clipa".(str_pad($zaehler, 3, "0", STR_PAD_LEFT)).".3gp" ) ) {
         $zaehler++;
         echo "Datei $file gefunden <br>";
         } else {
           echo "Datei $file nicht gefunden <br>";
           }
   }
} closedir( $handle );
 
Zurück