code gesucht zum dateien umbenennen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

code gesucht zum dateien umbenennen

Beitrag 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"
Cojote
Mitglied
Beiträge: 40
Registriert: 14.10.2004 14:44

Beitrag 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.
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

hmmm naja

Beitrag 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
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

Beitrag 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));
    } 
} 
Cojote
Mitglied
Beiträge: 40
Registriert: 14.10.2004 14:44

Beitrag 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.
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

danke

Beitrag von konne »

alles klar, danke, den rest sollte ich an meine bedürfnisse angepaßt bekommen.
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

die säge klemmt

Beitrag 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
Benutzeravatar
konne
Mitglied
Beiträge: 250
Registriert: 26.08.2004 15:30
Kontaktdaten:

brett vorm kopp

Beitrag von konne »

mal wieder nen brett vorm kopp gehabt:

Code: Alles auswählen

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

Zurück zu „Coding & Technik“