Viele Bilder automatisch unbenennen?

Ok... habs nun korrigiert. Jetzt kommt das:

bool(true)
Warning: is_file() expects parameter 1 to be string, array given in E:\xampp\xampp\htdocs\pics_rename\index.php on line 5
NULL string(1) "." string(2) ".." string(9) "00001.jpg" string(9) "00002.jpg" string(9) "00003.jpg" string(9) "00004.jpg" string(9) "00005.jpg" string(9) "00006.jpg" string(9) "00007.jpg" string(9) "00008.jpg" string(9) "00009.jpg" string(9) "00010.jpg" string(9) "00011.jpg" string(9) "00012.jpg" string(9) "00013.jpg" string(9) "00014.jpg" string(9) "00015.jpg" string(9) "00016.jpg" string(9) "00017.jpg" string(9) "00018.jpg" string(9) "00019.jpg" string(9) "00020.jpg" string(9) "00021.jpg" string(9) "00022.jpg" string(9) "00023.jpg" string(9)
.....
 
oh, mein fehler. $txtfile ist ja ein Array mit den Zeilen.
Prüfe bei is_file() auf den Dateinamen.
 
Wenn man PHP lernen will, und jemand ein Befehl postet den man nicht kennt, lohnt es sich diesen Befehl auf php.net nachzuschauen was er machen sollte. Dann überlegen warum dieser Befehl vorgeschlagen wurde.
Ich arbeite so. php.net oder das Help-File das man von dort herunterladen kann sind meine ständigen Begleiter wenn ich PHP programmiere, da ich selten eine Syntax oder den Befehlnamen richtig im Kopf hab.

http://ch2.php.net/manual/en/function.is-file.php
 
Okay, habe ich gemacht. Jetzt kommt das im Browser:

Code:
bool(true) bool(true) string(1) "." string(2) ".." string(9) "00001.jpg" string(9) "00002.jpg" string(9) "00003.jpg" string(9) "00004.jpg" string(9) "00005.jpg" string(9) "00006.jpg" string(9) "00007.jpg" string(9) "00008.jpg" string(9) "00009.jpg" string(9) "00010.jpg" string(9) "00011.jpg" string(9) "00012.jpg" string(9) "00013.jpg" string(9) "00014.jpg" string(9) "00015.jpg" string(9) "00016.jpg" string(9) "00017.jpg" string(9) "00018.jpg" string(9) "00019.jpg" string(9) "00020.jpg" string(9) "00021.jpg" string(9) "00022.jpg" string(9)
.....

die pics.txt scheint er also zu finden. Würde mich wundern wenn er sie nicht finden würde, da sie nämlich im gleichen Verzeichnis liegt wie das Script.

Ich bin ja wiegesagt kein PHP - Crack... aber was mich ein wenig stutzig macht ist dieser Abschnitt:
PHP:
    $old_file = $image_dir."/".$image;
    $new_file =  $image_dir."/".$txtfile[$i].$image;

Gehört dieser Schrägstrich da hinein?
 
dieser Schrägstrich ist das Pfadtrennzeichen.
Test mal mit "\" anstelle von "/". Könnte sein, dass auf deinem Windowsrechenr das "/" n icht als Pfadtrennzeichen akzeptiert wird.
 
Nee das hat leider nix gebracht, dann das hier:

Parse error: syntax error, unexpected T_NS_SEPARATOR in E:\xampp\xampp\htdocs\pics_rename\index.php on line 17

:confused:
 
Hallo nochmal,

ich hatte im Script jpeg anstatt jpg, das war ein Teil des Fehlers. Jetzt kommt diese Fehlermeldung:

Warning: rename(pics\00001.jpg,pics/Bayern 00001.jpg) [function.rename]: No such file or directory in E:\xampp\xampp\htdocs\pics_rename\index.php on line 18
renamed pics\00001.jpg to pics/Bayern 00001.jpg
string(9) "00002.jpg"

Mein aktuelles Script:

PHP:
<?php
$image_dir = "pics"; //ordner mit Bildern
var_dump(is_dir($image_dir)); 
$txtfile = file("pics.txt");
var_dump(is_file('pics.txt')) . "\n";
$images = scandir($image_dir);
$i = 0;
foreach($images as $image){
  var_dump($image);
  if( $image == "." || $image == ".." )
    continue;
  $ext = explode(".",$image);
  if( $ext[count($ext)-1] == "jpg" ){//jpeg Datei
    if( !isset($txtfile[$i]) )  
      $i = 0;
    $old_file = $image_dir."\\".$image;  
    $new_file =  $image_dir."/".$txtfile[$i].$image;
    rename($old_file,$new_file);
    echo "renamed {$old_file} to {$new_file}<br />";
  }
  $i++;
} 

?>


Zweite Frage: Was muss ich tun, damit im Script der Unterstrich anstatt einem Leerzeichen im neuen Dateinamen auftaucht?
 
Hi

du hast in $old_file immer noch den Backslash ("\") drin, sollte das so sein?
Versuche es mal so:
PHP:
<?php
$image_dir = "pics"; //ordner mit Bildern
$txtfile = file("pics.txt");
$images = scandir($image_dir);
$delimeter = "_"; //Trennzeichen
$i = 0;
foreach($images as $image){
  var_dump($image);
  if( $image == "." || $image == ".." )
    continue;
  $ext = explode(".",$image);
  if( $ext[count($ext)-1] == "jpg" ||  $ext[count($ext)-1] == "jpeg"){//jpg oder jpeg Datei
    if( !isset($txtfile[$i]) )  
      $i = 0;
    $old_file = $image_dir."/".$image;  
    $new_file =  $image_dir."/".trim($txtfile[$i]).$delimeter.$image;
    if( !file_exists($old_file) )
      die("Fehler: Datei {$old_file} nicht gefunden");
    rename($old_file,$new_file);
    echo "renamed {$old_file} to {$new_file}<br />";
  }
  $i++;
} 
?>
 
Zuletzt bearbeitet:
Endlich! :)

Danke.

Kannst du mir noch sagen, was ich wo ändern muss um den Unterstrich in den Dateinamen reinzubekommen? Das Ergebnis soll so lauten: bayern_00001.jpg

Danke!
 
Zurück