Alle Dateien im Verzeichnis umbennen
lexus_mod
- php
Hallo,
ich versuche alle Dateien die sich innerhalb eines Verzeichnisses befinden umzubenennen.
Was ich nicht ganz verstehe ist, wenn ich den Befehl rename
rename(bilder/29416.jpg, bilder/F_29416.jpg) ohne die while ausführe dann klappts.
z.B.
oldname = 05537.jpg
newname = F_05537.jpg
Warning: Rename failed (File exists) in D:\_htdocs\read_file\file.php on line 9
Datei 05537.jpg gefunden
Warning: Rename failed (File exists) in D:\_htdocs\read_file\file.php on line 9
Datei 29416.jpg gefunden
Warning: Rename failed (File exists) in D:\_htdocs\read_file\file.php on line 9
Datei 29593.jpg gefunden
<?php
$handle=opendir ('bilder/');
echo "Verzeichnis-Handle: $handle <br>";
echo "Dateien:\n";
while ( $file = readdir ( $handle ) ) {
if( $file == "." or $file == "..") {
}else{
if ( rename( $handel.$file, $handel."F_".$new ) ) {
echo "Datei $file nicht gefunden <br>";
} else {
echo "Datei $file gefunden <br>";
}
}
} closedir( $handle );
?>
while ( $file = readdir ( $handle ) ) {
Ist die Divergenz $handle oben < -- > $handel unten gewollt?
if ( rename( $handel.$file, $handel."F_".$new ) ) {
Hallo,
while ( $file = readdir ( $handle ) ) {
if( $file == "." or $file == "..") {
}else{
if ( rename( $handel.$file, $handel."F_".$new ) ) {
ein kleiner Buchstabendreher: $handle <> $handel
Schönen Gruß aus Bilk
Rainer
oh, sorry,
nein das ist ein tippfehler.
Das klappt aber immer noch nicht!
Jetzt erstellt das php in dem Verzeichnis eine Datei F_, die Dateien die eigentlich umbenannt werden sollen sind unverändert
<?php
$handle=opendir ('bilder/');
echo "Verzeichnis-Handle: $handle <br>";
echo "Dateien:\n";
while ( $file = readdir ( $handle ) ) {
if( $file == "." or $file == "..") {
}else{
if ( rename( "bilder/".$file, "bilder/F_".$new ) ) {
echo "Datei $file nicht gefunden <br>";
} else {
echo "Datei $file gefunden <br>";
}
}
} closedir( $handle );
?>
Hallo,
Jetzt erstellt das php in dem Verzeichnis eine Datei F_, die Dateien die eigentlich umbenannt werden sollen sind unverändert
Du hast vergessen, $new einen Wert zuzuweisen.
if ( rename( "bilder/".$file, "bilder/F_".$new ) ) {
Schönen Gruß aus Bilk
Rainer
jo, ich habe $new durch $file ersetzt, jetzt klapps auch:)
Ich hatte sonst nicht gewusst wie ich auf die schnelle 6000 Bilder in F_xxxxxx.jpg umbenennen sollte.
nen dickes Danke an alle
lexus_mod
gudn tach!
Ich hatte sonst nicht gewusst wie ich auf die schnelle 6000 Bilder in F_xxxxxx.jpg umbenennen sollte.
dafuer gibt's auch schon fertige tools.
z.b. ren_ext.pl
prost
seth
Hello,
Hallo,
ich versuche alle Dateien die sich innerhalb eines Verzeichnisses befinden umzubenennen.Was ich nicht ganz verstehe ist, wenn ich den Befehl rename
rename(bilder/29416.jpg, bilder/F_29416.jpg) ohne die while ausführe dann klappts.z.B.
oldname = 05537.jpg
newname = F_05537.jpgWarning: Rename failed (File exists) in D:\_htdocs\read_file\file.php on line 9
Datei 05537.jpg gefundenWarning: Rename failed (File exists) in D:\_htdocs\read_file\file.php on line 9
Datei 29416.jpg gefundenWarning: Rename failed (File exists) in D:\_htdocs\read_file\file.php on line 9
Datei 29593.jpg gefunden
Dass das Script in der hier bisher geposteten Version überhaupt funktioniert, beweifele ich.
Du hast in einem Verzeichnis die namen besorgt, und in einem anderen die Umbenennung durchgeführt.
<?php
$dirname = ('bilder/');
$handle = opendir ($dirname);
echo "Verzeichnis-Handle: $handle <br>";
echo "Dateien:\n";
while ( $file = readdir ( $handle ) ) ## Zugriff erfolgt über Verzeichnishandle
{
if(is_file($dirhandle.$file)) ## der qualifizierte Bezeichner wird benötigt
{
# if ( rename( $handle.$file, $handle."F_".$new ) ) ## Was sollte das eigentlich?
if ( rename( $dirname.$file, $dirname."F_".$new ) ) ## Zugriff erfolgt über Namen!
{
echo "<p>Datei $file gefunden unf umbenannt</p>";
}
else
{
echo "<p>Datei $dirname.$file nicht gefunden </p>";
}
}
}
closedir( $handle );
?>
Diese Konstruktion oben ist nun zwar schon "richtiger" als Deine, aber immer noch falsch.
Sie könnte nämlich ggf. (das kommt auf das OS an) eine Rekursion erzeugen, und damit in eine Endlosschliefe führen.
Für Umbenennungen ganzer Verzeichnisinhalte sollte man daher auf jeden Fall mit Snapshots und nicht mit Dynasets arbeiten. Also erst die Liste der Dateien besorgen und dann nach der Liste vorgehen.
Und schau Dir mal die Funktion glob() an, die aber auch schon wieder andere Fallen enthält, da sie nicht nur den Dateinamen zurückliefert, sondern den gesamten relativen oder qualifizierten Bezeichner. Damit kann man dann wieder nicht so einfach umbenennen, wie mit readdir().
http://de.php.net/manual/de/function.glob.php
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Und natürlich noch was falsch...
<?php
$dirname = ('bilder/');
$handle = opendir ($dirname);
echo "Verzeichnis-Handle: $handle <br>";
echo "Dateien:\n";while ( $file = readdir ( $handle ) ) ## Zugriff erfolgt über Verzeichnishandle
{
if(is_file($dirname.$file)) ## der qualifizierte Bezeichner wird benötigt
{
# if ( rename( $handle.$file, $handle."F_".$new ) ) ## Was sollte das eigentlich, ein
## Handle und einen Namen zu kombinieren?
if ( rename( $dirname.$file, $dirname."F_".$new ) ) ## Zugriff erfolgt über Namen!
{
echo "<p>Datei $file gefunden und umbenannt</p>";
}
else
{
echo "<p>Datei $dirname.$file nicht gefunden </p>";
}
}
}
closedir( $handle );
?>
Nur, falls noch jemand später reinguckt...
Harzliche Grüße aus http://www.annerschbarrich.de
Tom