php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
unlink mit Platzhalter ?


 
Master0Blicker
19-09-2005, 21:04 
 
Hallo,

ich möchte Dateien in einem Verzeichnis löschen die mit einem bestimmten Zeichenfolge beginnen.

Also zb. 050912*


aber unlink bring immer eine Fehlermeldung das die Datei nicht vorhanden ist!

Anscheinend versteht unlink den 'Platzhalter' * nicht und versucht die Datei 050912* zu löschen welche natürlich nicht vorhanden ist....

Jemand eine Lösung für das Löschen von mehreren Dateien auf einmal mit Platzhalter * ?

 
Schnoop
19-09-2005, 21:09 
 
Du könntest das Verzeichnis einlesen und während des einlesen mittels strpos oder ähnlichem schauen ob die Datei ins Raster passt oder nicht.

Anhand dieser Information, die in einem Array liegen sollten, kannst du dann die Dateien löschen.

 
penizillin
19-09-2005, 21:35 
 
mit äußerster vorsicht zu genießen.

$files = glob('foo.*');
foreach ($files as $v)
unlink($v);

 
Master0Blicker
19-09-2005, 22:12 
 
@penizillin

$files = glob('foo.*');
foreach ($files as $v)
unlink($v);


wobei foo für den Dateinamen steht oder wie ?

Also alle Dateien mit 05*.* -> $files = glob('05*')

???

Also so hab ich es probiert aber leider ging nicht....

 
penizillin
19-09-2005, 22:18 
 
aber leider ging nicht.... wann lernst du endlich, das problem selbst zu erfassen? fehlermeldung? $files mal ausgeben lassen? den pfad übrprüft?

 
Master0Blicker
19-09-2005, 23:25 
 
@penizillin

Ja, wie soll ich das sagen ?
Ich bin ja Fachinformatiker und nicht grade auf den Kopf gefallen.....

Aber wo es keine Fehlermeldung gibt.......gibts halt keine!

Also das Script tut so als ob aber die Dateien sind dennoch da!

Ich weis wie man Fehler eingrenzen kann, ich gebe die Pfade aus, schaue ob die ok sind. Lasse genau diese prüfen ob die auch existieren, usw...
Ich gebe an jedem Schritt Ausgaben aus um zu sehen bis wo es kommt usw....

In VB ist es zwar leichter, ich habe ja das Debug-Fenster aber dennoch, auf den Kopf gefallen denke ich nicht.......

Aber, ich habe erst vor 4 1/2 Monaten überhaupt mit PHP angefangen....da muss man sich erst 'umgewöhnen'...

Und Fehler versuche ich im vorraus schon soweit wie möglich einzugrenzen (hoffe das hat hier schon jemand bemerkt). Ausser ich bin mal wieder zu voreillig!

Wenn mein Projekt fertig ist kannst es dir mal anschauen und sagen ob das zumindest eines 4-Monate-Erfahrenen PHP-Scripter würdig ist.....


@Schnoop
Hab deinen Lösungsansatz aufgegriffen und funktioniert tadellos!

[PHP]
$verz = dir("/usr/www/htdocs/meineadresse/backup/");
while($entry=$verz->read())
{
if(stristr($entry,$needed)!='') unlink("/usr/www/htdocs/meineadresse/backup/".$entry);
}
$verz->close();
[PHP]

 
penizillin
19-09-2005, 23:33 
 
hier, was ich mit debugging meine: $files = glob('/path/to/files/foo.*');

if (count($files) == 0)
echo "glob hat nichts enigelesen";
else
{
print_r($files);
foreach ($files as $v)
{
if(file_exists($v))
{
echo 'lösche '.$v.'<br />';
unlink($v);
}
else
echo $v.' nicht gefunden<br />';
}
} würdest du mit vb doch ähnlich machen...

 
Master0Blicker
19-09-2005, 23:39 
 
@penizillin

Genau das mache ich ja!
Und ich poste hier dann das wesentliche was für mich zählt bzw stelle meine Frage explizit an der angegeben Stelle wo es Probleme / Ungereimtheiten gibt.

Und nicht erstmal das ganze Script posten und euch sagen: so, nun sucht mal wo der Fehler liegt.......

Verstehst du ?

Ich lerne mich eben grade nur in eine neue Programmiersprache ein......

Aber nun sind wir ziemlich weit off-topic gegangen.
Ich werde versuchen in Zukunft die 'Umstände' genauer zu erläutern!

Ich danke euch jedenfalls recht herzlich für eure bisherige Unterstützung & macht weiter so!

 
penizillin
19-09-2005, 23:44 
 
aber so kannst du dich gezielter auf deine fehlerbeshreibung beziehen.

 
onemorenerd
20-09-2005, 00:06 
 
Statt unlink('foo*'); kannst du ja auch mal folgendes versuchen:shell_exec('rm foo*');


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:34 Uhr.