• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Verzechnis auslesen und Dateien umbenennen

schlegel.berlin

New member
Liebe Freunde des Quellcodes,

kaum zuhause, bin ich aber scheinbar noch ein bisschen eingeschränkt beim Denken und könnte eine kleine Hilfestellung brauchen....

Ein Verzeichnis auszulesen ist ja kein Problem :)

Ich möchte aber beim Auslesen die Dateien (es sind 120 jpg - images), unabhängig ihres ursprünglichen Namens, in der Reihenfolge des Auslesen in fortlaufende Nummer wandeln, beginnend mit 001 (also vorlaufenden Nullen).

Die Dateien sollen also nach dem Auslesen/Renamen die Namen 001.jpg bis 120.jpg usw. haben.
Am Besten wäre vielleicht, die Dateien gleich im Verzeichnis dauerhaft umzubenennen (mit rename?)
Ich scheitere gerede grandios an dieser Aufgabenstellung. Kann jmir jemadn von Euch helfen?
Am bBesten mit einem kleinen Codeschnipsel, weil mein Denkvermögen, vielleicht durch das scheiße Antiotika, noch stark gedämpft ist...

LG, Karin
 
Sorry,hab ich mit meine "Matschkopp" wohl versehentlich in die falsch Kat. gepostet ...
Ich gelobe Besserung und
DANKE für's verschieben ...

LG, Karin
 
Du iterierst beim Auslesen des Verzeichnisses über alle Dateien. Lass' doch einfach parallel einen Counter laufen und benenn' die Datein nach dem um:
PHP:
$dir = new DirectoryIterator("DEIN_VERZEICHNISS");
$counter = 0;
foreach ($dir as $file){
	if (preg_match("/^jpe?g$/i", $file->getExtension()){
		$counter += 1;
		rename($file->getPathname(), sprintf("%s%s%03d.%s", $file->getPath(), DIRECTORY_SEPARATOR, $counter, $file-getExtension()));
	}
}
 
Danke!
Und ja lieber kkapsner, Deine Wahrnehmung war richtig, ein Codeschnipsel wäre hilfreich, weil mein Hirn echt noch nicht wieder richtig funktioniert, was ganz leicht daran erkennbar ist, dass ich zwar die Idee in Deinem Post verstehe, dein Codeschnipsel (leider) nicht läuft, ich aber unfähig bin, den Fehler zu erkennen....

Außerdem hatte ich nicht mal bemerkt, dass Du, Mikdoe, in guter Absicht, in die "falsche" Kategorie verschoben hattest... Mein Post war in "Serverseitige Programmieruing" eigentlich schon gut plaziert, wie kkapsner richtig aus meinem Post rausgelesen hat ...
Ihr seht, ich bin denkmäßig grad echt noch minderbefähigt...

Ich laufe durch die Medikamenten-Bomben - die ich täglich in mich reinstopfe - herum wie in einem dicken Wattebausch, wie so ein bisschen dauerbesoffen (dabei trink ich kaum Alkohol, lol), schlafe beschissen und werde andauernd wach.
Die Alterenative dazu, diesen Zustand zuhause zu "erdulden", wäre für mich gewesen, noch länger im KK zu bleiben, wozu ich echt eine Lust mehr hatte, bei dem leckeren 5-Sterne-Essen dort ...
Dann lieber eine Zeit lang als blöde Kuh durch die Welt kriechen... (Na ja, ne gute Woche nur noch, hoffe ich...)

LG, Karin

Kurfassung:
Ein funktionerendes Codeschnipsel wäre in diesem temporär hoffnunglosen Fall echt hilfreich..
 
Zuletzt bearbeitet:
Hi,
hab jetzt kkapsners Beispiel nicht getestet, die Lösung ist vom Grundsatz so ok. Nur sind Iteratoren mehr was für Profis,
ich hab deshalb mal eine andere einfache Lösung mit ausführlichen Code erstellt, die vielleicht für dich besser verständlich ist.
PHP:
$path = "dein_path";
$files = glob($path."\*.{jpg,JPG}",GLOB_BRACE);
foreach($files as $key => $fullName){
  $oldBaseName = basename($fullName);
  $newBaseName = sprintf('%03d',$key+1).'.jpg';
  $newName = str_replace($oldBaseName,$newBaseName, $fullName );
  echo $fullName . ' => ' . $newName . "<br>";
}

Dein Path must du einsetzen, ebenso die Auflistung ergänzen, fallst du auch .jpeg/.JPEG hast.
Habe mit Absicht noch kein rename drin, sondern eine Testausgabe. Schau dir an, ob die Umbenennungen nach deinem Vorstellungen ablaufen und setze dann das rename nach.

LG jspit
 
Zuletzt bearbeitet:
Ups... da haben sich gleich zwei Fehler eingeschlichen...
PHP:
$dir = new DirectoryIterator("DEIN_VERZEICHNISS");
$counter = 0;
foreach ($dir as $file){
	if (preg_match("/^jpe?g$/i", $file->getExtension())){
		$counter += 1;
		rename($file->getPathname(), sprintf("%s%s%03d.%s", $file->getPath(), DIRECTORY_SEPARATOR, $counter, $file->getExtension()));
	}
}

PS: Wenn ein Code nicht läuft, ist immer die Fehlermeldung hilfreich.
 
Zurück
Oben