Datei umbenennen

mockauer

Mitglied
Hey,

ich habe ein kleines Script geschrieben, was mir die Dateinamen umbenennt.
DIe Dateien liegen in einem VeRzeichnis mit 001,002,...,113 vor den Liedtitel, ich möchte, dass die Zahlen verschwinden, geht auch recht gut, nur nachdem die Zahlen weg sind, macht das Skript noch ne 2. runde, die ich mir nicht erklären kann. Das kuriose ist, bei 4 Dateien (txt-Dateien) benennt es richtig um ohne ne 2. runde und bei 113, also alle Lieder macht es ne 2. Runde.

Ich habe nirgends ne klärende Schleife drin, brauche bitte dringend Hilfe.


PHP:
<?php
echo "<big><b>Zufällige Umbenennenung aller Dateien im Verzeichnis (einmalig)</b></big><br/><br/>";

$dirname=('test/zahlen/');
$handle=opendir ($dirname);






while ( $file = readdir ( $handle ) ) {
if( $file == "." or $file == "..") {
    }else{
	$ohne_zahlen=substr($file,4);
	$alt=$dirname.$file;
	$neu=$dirname.$ohne_zahlen;
	$umbenennen=rename($alt,$neu);
	if(isset($umbenennen))
	{
		echo "$alt in $neu umbenannt.<br/>";
		
	}
   }
   
}
echo "<span style='font-size: 15px; color: red;'>Die Dateien aus dem Verzeichnis ".$dirname." in das Verzeichnis 'ohnezahlen' verschieben und dann auf --> ";
echo "<a href='weiter.php'>Weiter</a>"; 
closedir( $handle );


?>
 
Der Code sollte funktionieren, wenn ich nicht etwas übersehen habe.

Ich habe ihn mal etwas umgeschrieben:
PHP:
<big>
  <b>Zufällige Umbenennenung aller Dateien im Verzeichnis (einmalig)</b>
</big>
<br/><br/>

<?php

$dirname = 'test/zahlen';
$handle = opendir($dirname);

if (!$handle) {
  exit('Verzeichnis-Handle konnte nicht erstellt werden!');
}

while ($entry = readdir($handle)) {
  // Auch Unterverzeichnisse und andere Dateitypen überspringen!
  if ($entry=='.' || $entry=='..' || !is_file($entry)) {
    continue;
  }

  $oldName = $dirname . '/' . $entry;
  $newName = $dirname . '/' . substr($entry, 4);
  $isRenamed = rename($oldName, $newName);

  if ($isRenamed) {
    echo "$oldName in $newName umbenannt. <br />";
  }
  else {
    echo "$oldName konnte <strong>nicht</string> in $newName umbenannt werden! <br />";
  }
}

closedir($handle);

echo <<< END
<span style='font-size: 15px; color: red;'>
  Die Dateien aus dem Verzeichnis $dirname in das Verzeichnis 'ohnezahlen' verschieben und dann auf --> <a href='weiter.php'>Weiter</a>
</span>
END;
Am besten gehst du auch mal die Ausgabe-Liste durch, welche Datei wie umbenannt worden ist.
 
Hey, danke für deine Hilfe, bei der if($isRenamed) müsste if($isRenamed==1) stehen, nur das Problem, bei deinem ist, dass er gar nicht in die $oldname und $newname springt, also irgendwie verschluckt es sich bei !is_file($entry)

Ideen?:(
 
if($isRenamed) müsste stimmen, da [phpf]rename[/phpf] TRUE bei Erfolg zurückgibt.

Aber der Fehler bei meinem Code ist, dass ich nicht den Pfad innerhalb von [phpf]is_file[/phpf] hinzufüge:
PHP:
  if ($entry=='.' || $entry=='..' || !is_file($dirname . '/' . $entry)) {
    continue;
  }
 
Ich verstehs nicht, ich habe deins nun auch mit eingefügt. Ab 23 Dateien, bringt es den Schrott mit einer "2" schleife, aber nur wenn das Rename mit dabei ist, ansonsten zeigt es mit alles richtig.

Ich habe dann noch n 2. skript, was eben alles wieder mti Zahlen belegt, das geht einwandfrei.

Ich kann dir zur Not auch mal die ausgaben schicken es ist komisch:(
 
Ich habe es gerade nochmal getestet-.-'. Ihr müsst doch langsam glauben ich sei verrückt, die Dateien vorher die nur bis 23 Dateien ging, kamen von ner CD, jetzt hatte ich die umbenannt mit meinem 2. Skript, also alle ohne Zahlen und mache es hin und her nach belieben:(, also es ist schon erfreulich, aber wieso geht das einmal und einmal nicht^^
 
Zurück