Datum vieler Dateien in untersch. Ordnern ändern

Guten Tag,

ich habe ein kleines Problem. Ich muss auf meinem Server das Datum von einigen Bildern ändern.
Die Bilder heißen immer gleich, also 123villa.jpg liegen aber in unterschiedlichen Ordnern. Beim Uploaden hat der FTP-Server das Erstellungs- und Zuletzt Geändert-Datum auf das aktuelle Datum gesetzt.

Ich möchte aber alle Bilder, die z.B. 123villa.jpg heißen auf ein älteres Datum setzen.

Wie könnte ich sowas mit einem Script umsetzen?

mit touch()

http://us3.php.net/manual/de/function.touch.php

und wenn mehrere Dateien, evtl. einer Schleife.

mit touch()

http://us3.php.net/manual/de/function.touch.php

und wenn mehrere Dateien, evtl. einer Schleife.

okay. danke für den link. Ich bin nicht wirklich fit in php, bzw. gar nicht. Ich habe in einem Ordner „Dezember“ das Bild „123villa.jpg“ liegen. Nach dem Upload hat der Server das Datum geändert auf 23.Juni 2009. Es soll aber wie gehabt auf dem 10.12.2008 sein.

Ich fände es nicht schlimm, das Script in jeden Ordner zu packen, und einmal laufen zu lassen; nur habe ich LEIDER überhaupt gar keine Ahnung, was von dem o.g. Code ich nehmen soll… Ich sehe da leider nur Glyphen…

also ich glaube ich habe es jetzt…

ich habe folgendes Script genommen:

<?php $target_file = "123villa.jpg"; //system filepath to your file
$file\_content = implode("",file($target\_file)); @unlink($target\_file); if($savetofile = fopen($target\_file, "w")) { fputs($savetofile, $file\_content); fclose($savetofile); } $new\_date = strtotime("01 April 2007"); // set the required date timestamp here touch($target\_file,$new\_date); ?\> Das hat jetzt schon wunderbar funktioniert. Das Datum ist geändert. Wenn ich anstatt 01 April 2007 jetzt noch einen Unix-Timestamp nehmen könnte, wäre das großartig. Ich habe mal probeweise das Datum durch einen Timestamp ersetzt, beispielsweise 707525529, hat aber nicht funktioniert.

Hallo

Du hast da einige unnötige Zeilen drin.
Ich schreib mal hinter jede Zeile was sie bewirkt.

<?php :
$target\_file = "123villa.jpg"; //system filepath to your file

Dateiname in die Variable $target_file speichern

$file_content = implode("",file($target_file));

Dateiinhalt zeilenweise auslesen, Zeilen wieder zusammensetzen, in $file_content speichern

@unlink($target_file);

Datei löschen

if($savetofile = fopen($target_file, „w“)) {

Datei neu anlegen und öffnen

fputs($savetofile, $file_content);

Vorhin ausgelesenen Dateiinhalt aus $file_content in die Datei schreiben

fclose($savetofile);

Datei schließen

}
$new_date = strtotime(„01 April 2007“);

Menschenlessbares Datum in Timestamp umwandeln

touch($target_file,$new_date);

Dateidatum auf das im Timestamp angegebene Datum setzen

?>

Es reichen also folgende Zeilen aus:

<?php $target_file = "123villa.jpg";<br />$new\_date = 1175378400; 
touch($target\_file,$new\_date);
?\>

Wenn du gleich ein ganzes Verzeichnis bearbeiten willst kannst du das so machen (ungetestet):

<?php $files = scandir('./');<br />$new\_date = 1175378400; 
foreach ($files as $target\_file)
{
 if ( (is\_file($target\_file)) and (substr($target\_file, -4) == '.jpg') )
 {
 touch($target\_file,$new\_date);
 }
}
?\>

scandir liefert alle Dateien und Verzeichnisse im angegebenen Verzeichnis.
Mit foreach werden diese nacheinander abgearbeitet.
Mit if wird überprüft, ob die ‚Datei‘ wirklich eine Datei (und nicht etwa ein Verzeichnis) ist und auf .jpp endet.

Gruß Johannes