Seite 1 von 1

code gesucht zum dateien umbenennen

Verfasst: 03.02.2005 11:30
von konne
moin,

hat zufällig jemand nen code parat, mit dem man dateien eines verzeichnisses einlesen kann, um diese anschließend umzubenennen.

der neue name sollte aus teilen des alten namen bestehen.

z.b.:
name_old: "lfdnr_erster_teil_-_zweiter_teil.typ"
name_new: "erster teil - zweiter teil.typ"

Verfasst: 03.02.2005 11:44
von Cojote

Code: Alles auswählen

define('PDIR', ...)  //...durch die absolute Pfadangabe zum Verzeichnis der Dateien ersetzen
$files = array();
$dir = opendir(PDIR);
while ($file = readdir($dir)) {
    if(is_file(PDIR . "/" . $file)) {
        array_push($files, array('name' => $file)); //alternativ im Array noch neuen Dateinnamen festlegen
    }
}

foreach ($files as $file) {
   if(!rename(PDIR."".$file['name'], PDIR."".$file['neuer_name'])) {
        echo $file['name']." konnte nicht umbenannt werden";
   }
}
Wenn dein Verzeichnis weitere Unterverzeichnisse hat die auch durchsucht werden sollen musst du obigen Codeschnipsel nach etwas erweitern. Es beachtet nämlich nur die in PDIR angegebene Verzeichnisebene.

hmmm naja

Verfasst: 03.02.2005 11:55
von konne
dass wäre dann aber nur das ende des codes. vorher muss ich doch noch jede datei einzeln einlesen, zerteilen und neu zusammenfügen, um werte für alter/neuer name zu haben.

meine frage zielte eigentlich auf schon etwas fast fertiges, wo vielleicht nur noch kleinigkeiten hinsichtlich der formatierung zu machen wären.

es eilt auch nicht, da ich momentan eh wenig zeit habe.

edit: oh sehe du hast deinen post geändert, werd mal drüber schaun, danke

Verfasst: 03.02.2005 12:06
von konne
könnte man die while-schleife also beispielsweise wie folgt ändern?

Code: Alles auswählen

while ($file = readdir($dir)) { 
    if(is_file(PDIR . "/" . $file)) { 
        $old = $file;
        $new = $old.'zustatz';
        array_push($files, array('name' => $old));
        array_push($files, array('neuer_name' => $new));
    } 
} 

Verfasst: 03.02.2005 12:11
von Cojote
Fast richtig. Nur ein array_push zuviel

Code: Alles auswählen

array_push($files, array('name' => $old,
                                    'neuer_name' => $new'
                                   )
                );
Sollte so funktionieren.

danke

Verfasst: 03.02.2005 12:16
von konne
alles klar, danke, den rest sollte ich an meine bedürfnisse angepaßt bekommen.

die säge klemmt

Verfasst: 03.02.2005 12:39
von konne
irgendwo klemmts noch:

Code: Alles auswählen

<?PHP
$pfad = 'E:/.../...';
define('PDIR',$pfad);
$files = array();
$dir = opendir(PDIR);
while ($file = readdir($dir)) {
  if(is_file(PDIR. "/" .$file)) {
    $old = $file;
    $new = $old.'zustatz';
    array_push($files, array('name' => $old,
                             'neuer_name' => $new));
  }
}
foreach ($files as $file) {
  if(!rename(PDIR."".$file['name'], PDIR."".$file['neuer_name'])) {
    echo $file['name']." konnte nicht umbenannt werden";
  }
}
?>
es scheint kein "/" zwischen pfad und datei gemacht zu werden.

Code: Alles auswählen

Warning: rename(E:/.../...datei.typ,E:/.../...datei.typzusatz): No such file or directory in E:\...\...\...\...\...\rename.php on line 15
datei.typ konnte nicht umbenannt werden

brett vorm kopp

Verfasst: 03.02.2005 12:52
von konne
mal wieder nen brett vorm kopp gehabt:

Code: Alles auswählen

if(!rename(PDIR."/".$file['name'], PDIR."/".$file['neuer_name']))