Webstatt.org - Community seit 2006 - 2012 (2024?)

Verzeichnisse durchforsten

user-343
23.12.2006 20:13

Man, man, hab ich heute Probleme Fettes Grinsen
Ich will ein ganzes Verzeichnis abfahren. Dabei soll jedes Subverzeichnis geöffnet werden, darin gesucht werden, etc... Nebenbei wird später jeder mp3-Datei die ID3-Tags entnommen, in einer Datenbank notiert und die Datei wird entsprechend verschoben und umbenannt.
Mein Problem aber: Meine Funktion liesst sich in genau 2 Subverzeichnisse. Und ich hab keine Ahnung, warum.

function id3rn_scan($dir) {
print $dir."\r\n";
$handler = opendir($dir);
// Jede Datei auslesen
while (false !== ($file = readdir($handler))) {
if($file == '.' OR $file == '..' OR $file === 'System Volume Information' OR $file === 'RECYCLER'zwinkern {
// Do nothing with them
}
elseif(is_dir($file)) {

id3rn_scan($dir.'/'.$file);
print "\r\n";
}
elseif(substr($file, -4) == '.mp3'zwinkern {
// id3rn_move($file);
}
}
}


Ausgabe (Auszug):
D:/Lacrimosa

D:/Metroid Prime
D:/Metroid Prime/Metroid Prime


D:/Moonspell

D:/My Dying Bride


Es sind auch keine Gemeinsamkeiten erkennbar, welche Subverzeichnisse er nun ausliest, und welche nicht... =/

EDIT: Ha! Doch, eine Gemeinsamkeit gibts. Und zwar heissen die ausgelesenen subdirs gleich wie das Eltern-Verzeichnis...

Avatar user-182
23.12.2006 20:25

1. warum benutzt du in z6 ===?
2. und überhaupt dieses mit elseif usw...mach das doch einfach mit continue?

ich meine ich hatte auch mal das problem...versuch da mal nach dem erfolgreichem ausgeben des verzeichnisses ein return true;

Seid ihr auch schon wix'r? xD
user-343
23.12.2006 20:53

1) == könnte auch andere Treffer treffen... Ich dachte mal, irgendwo so n' Beispiel gesehen zu haben, naja, egal.

2) Kommt ja aufs gleiche raus, oder? Ich mags lieber so. Oder gibts mit continue Vorteile?

@return true; ka wo du meinst, aber egal, denn ich habs! Und schäme mich grad richtig.... Autsch.
Ich hab nur den Verzeichnisnamen geprüft... Das Script selbst war immernoch im gleichen Verzeichnis - D:/. Und da gibts halt ein Verzeichnis mit Namen "Eisbrecher". Darin die Alben "Eisbrecher" und "Antikörper". Naja.. Das Album Eisbrecher war schlussendlich ein Ordner, weil das Elternverzeichnis eines war. "Antikörper" war keines... weil es das auf D:/ nicht gab :O

function id3rn_scan($dir, $level = 0) {
print "\r\n".str_repeat("\t", $level)."=> Level $level\r\n";
print str_repeat("\t", $level).$dir."\r\n";

$handler = opendir($dir);
// Jede Datei auslesen
while (false !== ($file = readdir($handler))) {
if($file == '.' OR $file == '..' OR $file == 'System Volume Information' OR $file == 'RECYCLER'zwinkern {
// Do nothing with them
continue 1;
}
elseif(is_dir($dir.'/'.$file)) {
id3rn_scan($dir.'/'.$file, $level+1);
}
elseif(substr($file, -4) == '.mp3'zwinkern {
// id3rn_move($file);
}
}

closedir($handler);
print "\r\n";
}