![]() |
Willkommen, Gast ( Anmelden | Registrierung )
![]() |
![]()
Beitrag
#1
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
Hi,
wie das so ist. Man bastelt jahrelang an einer Site und die wächst und wächst und irgendwann weiß man nicht mehr, welche Klasse aus dem Stylesheet man noch benutzt und welche nicht - gleiches gilt für Bilder aus dem "zentralen" Grafiken Ordner ... Ich benutze TopStyle 3.11 und dort gibt es einen Sitereport, der zumindest für die CSS Klassen das gewünschte erledigt. Das Programm findet unbenutzte Klassen (orphan classes). Die Sache hat nur einen Haken: benutzt man multiple Klassen (class="button rechts klein") erkennt TopStyle das (noch!) nicht :-( Also leider nicht zu gebrauchen. Kennt jemand ein Tool, welches genau das erledigt? CSS Datei nehmen, gucken wo die innerhalb der Site überall verlinkt ist und die nicht benutzten Klassen anzeigen? Ähnliches sollte ja auch für Bilder funktionieren: Bildordner auswählen, und Site durchsuchen, welche der im Ordner enthaltenen Bilder/Dateien nicht irgendwo in der Site benutzt wird. Das würde mich gewaltig nach vorne bringen *g* Viele Grüße Andreas |
|
|
![]() |
![]()
Beitrag
#2
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hallo Andreas,
mir geht es genau so! Ich 'sortiere' auch mit TopStyle und da wo ich meine überflüßiges gefunden zu haben, lösche ich es nicht sondern, wird es erst mal auskommentiert. Wenn mir dann in den nächsten Wochen nichts auffällt, wird es erst endgültig gelöscht.... So muß man sich helfen. Was die Bilder angeht, so fällt mir gerade ein, geht das etwas mühsam mit XENU. Und zwar, da wo ich denke, daß es ein Bild ist was nicht mehr verwendet wird, nehme ich es raus in einem Ablageordner, lasse dann Xenu laufen und sollte es doch noch in gebrauch sein, gibt es eine Fehlermeldung. Ohne Fehlermeldung kann das Bild draußen bleiben, mit Fehlermeldung weiß ich erstens, daß das Bild noch Verwendung findet und zweitens wo. Ich weiß, alles etwas umständlich, aber wie gesagt 'So muß man sich helfen...' cu Conny |
|
|
![]()
Beitrag
#3
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo,
es geht sicher auch mit PHP, aber ich bin nur mit Perl vertraut: QUELLTEXT #!c:/perl/bin/perl # finde nicht verwendete bilder use strict; use warnings; use File::Find; my $home; my $picture_subdir; my $picture_dir; my $picture; my @picture_files; my @html_files; my $html; my $scan_result; # hier das stammverzeichnis der homepage eintragen $home = 'c:/home/ingo/html/interpro_neu'; # hier das unterverzeichnis der bilder eintragen $picture_subdir = 'bilder'; $picture_dir = $home.'/'.$picture_subdir; find(\&find_picture, $picture_dir); @picture_files = sort @picture_files; find(\&find_html, $home); foreach $picture (@picture_files) { foreach $html (@html_files) { $scan_result = &scan($html, $picture); if ($scan_result) { last; } } unless ($scan_result) { print "\nDas Bild : $picture wird zurzeit nicht verwendet!\n"; } } sub find_picture { my $akt_file = $File::Find::name; push @picture_files,$akt_file if ($akt_file =~ /[jpg|gif|png]$/i); foreach (@picture_files) { s/$picture_dir\///; } } sub find_html { my $akt_file = $File::Find::name; push @html_files,$akt_file if ($akt_file =~ /\..?htm.?$/i); } sub scan { my ($html,$picture)=@_; my $html_content; my $found; undef $/; open (IN,"< $html"); $html_content=<IN>; close IN; $found = $html_content =~ /$picture/; return $found; } Ich komme damit ziemlich gut klar. Man könnte, wenn man Zeit und Lust hätte, noch ein Formular und eine Ausgabe über CGI dazu tun. Mir reichts so. Der Beitrag wurde von i.b.g bearbeitet: 18.02.2005 - 17:25 |
|
|
![]()
Beitrag
#4
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
Hi Ingo,
sowas schwebte mir im Kopf auch schon vor ... nur faul wie ich bin ... ![]() Habe das Script mal ausprobiert. Funktioniert leider nicht so ganz wie erhofft. Ich weiß allerdings noch nicht warum ... ich musste die Pfade ein wenig umbiegen und nun findet er alle Bilder als unbenutzt. Meine Bilder liegen ziemlich woanders, als der Ordner, den ich durchsuchen möchte. d:\www\filmf1\film\kritiken wird durchsucht und d:\www\filmf1\grafic\jpeg ist der abzugleichende Bilderordner. Also benutze ich QUELLTEXT $home = 'd:/www/filmf1/film/kritiken'; und das Script läuft auch (fast - bei S geht es in den Timeout $picture_dir = 'd:/www/filmf1/grafic/jpeg'; ![]() Mit QUELLTEXT $home = 'd:/www/filmf1/film/kritiken'; übrigens das gleiche Ergebnis.$picture_subdir = '../../grafic/jpeg'; $picture_dir = $home.'/'.$picture_subdir; Und die Bilder erkennt er offensichtlich, denn die findet er alle :-o Grüße Andreas - noch bastelnd |
|
|
![]()
Beitrag
#5
|
|
is getting harder Gruppe: User Beiträge: 26 Mitglied seit: 24.09.2004 Mitglieds-Nr.: 3.770 ![]() |
eventuell könnte das Script bei den Class-Problem helfen.
Ist nicht das sauberste und auch nur auf einem lokalen Server getestet. Es werden folgende Dateien untersucht. htm html php php4 incl Dabei ist es egal ob Groß oder Keinschreibung In Zeile 2 Muss der Pfad zu der CSS-Datei rein. Das Verzeichnes mit der Suchdatei ist als oberstes Verzeichniss anzusehen. Die Datenstruktur der CSS sollte so aussehen: QUELLTEXT .Navi2 {background-color:#CC0000;} .Navi3 {background-color:#FED634;} .Navi4 {color:#000000; background-color:#FFEA96;} a.Navi5:link, a.Navi5:visited {text-decoration:none; color:#000000;} a.Navi5:active, a.Navi5:hover {text-decoration:none; color:#006600;} Ist eine deklaration mit "/* Navi2 {background-color:#CC0000;}" aukommentiert wird diese trotzdem mit in die Suche einbezogen. Bekannte Fehler Es werden auch Definitionen wie body,td,a usw angezeicht da diese nicht über class definiert werden müssen. Eventuell ist das ganze Ding ja auch schrott. MfG QUELLTEXT <?php
$css_Datei="css/style.css"; function dirlist($dir) { $list = array(); $dp = opendir($dir); while($file = readdir($dp)) { if(!is_dir($dir."/" . $file)) $list[] = $dir. "/" . $file; else { if($file != ".." && $file != ".") { $clist = dirlist($dir."/".$file); foreach($clist as $file2) { array_push($list, $file2); } } } } return $list; } $list = dirlist($DOCUMENT_ROOT . substr($PHP_SELF,0,strrpos($PHP_SELF,"/"))); for ($counter_list=0;$counter_list<count($list);$counter_list++) { $endung=pathinfo($list[$counter_list]); if (strtolower($endung['extension'])=='htm' || strtolower($endung['extension'])=='html' || strtolower($endung['extension'])=='php' || strtolower($endung['extension'])=='php4' || strtolower($endung['extension'])=='incl') { $dateizeilen = file($list[$counter_list]); //echo count($dateizeilen).'<br>'; for($count_dateizeilen=0;$count_dateizeilen < count($dateizeilen);$count_dateizeilen++) { if(strpos($dateizeilen[$count_dateizeilen],'class')) { $dateizeilen[$count_dateizeilen]=str_replace('"','\'',$dateizeilen[$count_dateizeilen]); $classEN=explode('class=\'',$dateizeilen[$count_dateizeilen]); //echo count($classEN).'<br>'; for($count_classEN=1;$count_classEN<count($classEN);$count_classEN++) { $classEN_1=explode('\'',$classEN[$count_classEN]); //echo "<textarea name='' cols='60' rows='3'>".$classEN_1[0]."</textarea><br>"; $class_array[]=$classEN_1[0]; } } } } //echo $list[$counter_list].'<br>'; } $class_array_1=array_unique($class_array); // //############################################################################# // $csszeilen = file($css_Datei); for($count_csszeilen=0;$count_csszeilen < count($csszeilen);$count_csszeilen++) { if(strpos($csszeilen[$count_csszeilen],'{')) { $csszeilen_1=explode('{',$csszeilen[$count_csszeilen]); $csszeilen_1[0]=trim(str_replace('/*','',$csszeilen_1[0])); $csszeilen_1[0]=trim(str_replace(':link','',$csszeilen_1[0])); $csszeilen_1[0]=trim(str_replace(':hover','',$csszeilen_1[0])); $csszeilen_1[0]=trim(str_replace(':visited','',$csszeilen_1[0])); $csszeilen_1[0]=trim(str_replace(':active','',$csszeilen_1[0])); if(strpos($csszeilen_1[0],',')) { $csskomma=explode(',',$csszeilen_1[0]); for($i=0;$i<count($csskomma);$i++) $css_array[]=trim($csskomma[$i]); } else $css_array[]=trim($csszeilen_1[0],'.'); } } // //############################################################################# // //echo count($css_array).'<br>'; $css_array_1=array_unique($css_array); //echo count($css_array_1).'<br>'; for($i=0;$i < count($css_array_1);$i++) { if(strpos($css_array_1[$i],'.')) { $css_array_1[$i]=str_replace('.','',strstr($css_array_1[$i],'.')); } if($css_array_1[$i]!='') { $css[] = $css_array_1[$i]; } } $unbenutzt = array_diff($css,$class_array_1); for($i=0;$i < count($unbenutzt);$i++) { if($unbenutzt[$i]!='')echo $unbenutzt[$i].'<br>'; } ?> Der Beitrag wurde von hondocrx bearbeitet: 18.02.2005 - 22:31 |
|
|
![]()
Beitrag
#6
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo,
ZITAT(Andreas @ 18.02.2005 - 19:02) Habe das Script mal ausprobiert. Funktioniert leider nicht so ganz wie erhofft. Ich weiß allerdings noch nicht warum ... Nun das ist leicht zu erklären, denn ich hab es erst mal so geschrieben, dass das Grafikverzeichnis ein Unterverzeichnis der Homepage ist. Ich hab es noch ein wenig angepasst, und nun sollte es eigentlich wie erwartet laufen. Man muss jetzt die beiden Verzeichnisse komplett eingeben, so dass sie unabhängig von einander sind. bei den HTML-dateien werden alle Dateien gefunden, die htm in der Dateiergänzung haben, htm html shtm shtml phtm phtml usw. Dateien mit php werden nicht gefunden. Kann man aber leicht im Filter anpassen. zurzeit QUELLTEXT $akt_file =~ /\..?htm.?$/i ändern in z.B. QUELLTEXT $akt_file =~ /\.(.?htm.?|php)$/i Versuch einfach mal das hier: QUELLTEXT #!c:/perl/bin/perl # finde nicht verwendete bilder use strict; use warnings; use File::Find; my $home; my $picture_subdir; my $picture_dir; my $picture; my @picture_files; my @html_files; my $html; my $scan_result; my $not_used=0; # hier das stammverzeichnis der homepage eintragen $home = 'c:/home/ingo/html/interpro_neu'; # hier das verzeichnis der bilder eintragen $picture_dir = 'c:/home/ingo/html/interpro_neu/bilder'; find(\&find_picture, $picture_dir); @picture_files = sort @picture_files; print $#picture_files." Bilder in $picture_dir gefunden!\nDavon werden nicht verwendet:\n"; find(\&find_html, $home); foreach $picture (@picture_files) { foreach $html (@html_files) { $scan_result = &scan($html, $picture); if ($scan_result) { last; } } unless ($scan_result) { print "$picture_dir/$picture \n"; $not_used ++ } } print "Insgesamt werden $not_used Bilder nicht verwendet!\n"; sub find_picture { my $akt_file = $File::Find::name; push @picture_files,$akt_file if ($akt_file =~ /\.(jpg|gif|png)$/i); foreach (@picture_files) { s/$picture_dir\///; } } sub find_html { my $akt_file = $File::Find::name; push @html_files,$akt_file if ($akt_file =~ /\..?htm.?$/i); } sub scan { my ($html,$picture)=@_; my $html_content; my $found; undef $/; open (IN,"< $html"); $html_content=<IN>; close IN; $found = $html_content =~ /$picture/; return $found; } Ich werd da mal sporadisch dran bleiben, mal sehen was noch so geht. Man hat ja sonst nichts zu tun ![]() Der Beitrag wurde von i.b.g bearbeitet: 19.02.2005 - 11:04 |
|
|
![]()
Beitrag
#7
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Öhm, Ingo.....
![]() wie und wo wird denn dieses Script eingebunden? ![]() cu Conny |
|
|
![]()
Beitrag
#8
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo,
von Einbinden kann man nicht sprechen. Einfach in irgend ein Verzeichnis packen, von wo aus Perl es starten kann - auf der Kommandozeile. Wenn man lange genug mit Unix gearbeitet hat (was ich zurzeit leider nicht mehr tue) kommt man von der Kommandozeile nur ganz schwer los. c:\irgend_ein_pfad> perl find_not_used_picture.pl wenn du es so genannt hast. Ein Problem gibt es aber doch noch. Wir adressieren ja mit Phase relativ, es sei denn, es hat einen triftigen Grund es nicht zu tun. Des Scanner kann damit noch nicht so richtig umgehen, wenn das Grafikverzeichnis nicht unterhalb des Homepageverzeichnisses - oder eben des Verzeichnisses das gescannt werden soll - liegt. Darüber muss ich noch einmal grübeln, wie man das relative Adressieren berücksichtigen kann. Ich sag ja, das ist nur ein Anfang und für mich hier passt es eben. |
|
|
![]()
Beitrag
#9
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo,
nun hat mich doch ein wenig der Ehrgeiz gepackt. Habe nun noch etwas verändert und denke, dass es so eigentlich funktionieren könnte. Also, Andreas, probier's mal mit dieser Version. Bei mir scheint es jedenfalls erfolgreich zu sein. Ich kann es ja dann mal kommentieren, wenn es denn sinn machen sollte. QUELLTEXT #!c:/perl/bin/perl # finde nicht verwendete bilder use strict; use warnings; use File::Find; my $home; my $picture_subdir; my $picture_dir; my $picture; my @picture_files; my @html_files; my $html; my $scan_result; my $not_used=0; # hier das verzeichnis eintragen, wo die html-dateien sind $home = 'c:/home/ingo/html/interpro_neu/schulen'; # hier das verzeichnis der bilder eintragen $picture_dir = 'c:/home/ingo/html/interpro_neu/bilder'; find(\&find_picture, $picture_dir); @picture_files = sort @picture_files; print 1+$#picture_files." Bilder in $picture_dir gefunden!\nDavon werden nicht verwendet:\n"; find(\&find_html, $home); foreach $picture (@picture_files) { foreach $html (@html_files) { $scan_result = &scan($html, $picture); if ($scan_result) { last; } } unless ($scan_result) { print "$picture \n"; $not_used ++; } } print "Insgesamt werden $not_used Bilder nicht verwendet!\n"; sub find_picture { my $akt_file = $File::Find::name; push @picture_files,$akt_file if ($akt_file =~ /\.(jpg|gif|png)$/i); } sub find_html { my $akt_file = $File::Find::name; push @html_files,$akt_file if ($akt_file =~ /\..?htm.?$/i); } sub del_common { my ($html, $picture_dir) = @_; my @html_dir; @html_dir = split('/', $html); foreach (@html_dir) { $picture_dir =~ s/$_\///i; } return $picture_dir; } sub scan { my ($html,$picture)=@_; my $html_content; my $found; undef $/; $picture = del_common($html, $picture); open (IN,"< $html"); $html_content=<IN>; close IN; $found = $html_content =~ /$picture/; return $found; } ACHTUNG! ACHTUNG! CSS-Dateien nicht vergessen! Auch dort können Bilder verlinkt sein, die in den HTML-Dateien nicht mehr erscheinen. Der Beitrag wurde von i.b.g bearbeitet: 19.02.2005 - 16:10 |
|
|
![]()
Beitrag
#10
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hi,
ich habe die Datei mal auf'm Server im Ordner cgi-bin gelegt, um sie dann über ein php-include aufzurufen.... (der Server *kann* Perl!) Das Ergebnis ist >>HIER<<. (Aber nicht lachen!) Anscheinend habe ich es (noch) nicht verstanden ![]() cu Conny |
|
|
![]()
Beitrag
#11
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo Conny,
nun, da gibt es nichts zu lachen. Es ist einfach nur kein CGI-Script. Es kann folglich auch nicht über einen Browser oder ähnliches, was das HTTP-Protokoll verwendet, aufgerufen werde. Deswegen bekommst Du lediglich den Quelltext angezeigt. Im vorliegenden Zustand ist es nur für den lokalen Betrieb gedacht. Am besten Du legst ein Verzeichnis an; z.B. c:\programme\perlen und da kopierst Du das script hinein; z.B. als pic_find.pl dann legst Du eine kleine pic_find.bat mit dem Inhalt an: QUELLTEXT @echo off c:\perl\bin\perl.exe c:\programme\perlen\pic_find.pl > c:\programme\perlen\bilder_not_used.txt notepad c:\programme\perlen\bilder_not_used.txt Dann verlinkst Du diese Batch auf den Desktop und kannst das Ganze mit Doppelklick starten. Das Scanergebnis geht in eine Datei und wird von Notpad angezeigt. |
|
|
![]()
Beitrag
#12
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hi Ingo,
Klar ist es kein CGI-Script, aber der Server sieht vor, daß auch Perl-Scripte in den cgi-Ordner abgelegt werden müßen. Das Perl-Script für den Counter liegt ja auch da, also habe ich mir gedacht: "schau-mir-mal". Schade eigentlich, daß das nicht geht.... Das mit der bat-Datei werde ich wohl hinbekommen! Danke ![]() cu Conny |
|
|
![]()
Beitrag
#13
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
So, da bin ich wieder.
*.bat gemacht, geschrieben, gibt aber folgende Fehlermeldung: QUELLTEXT Can't locate strickt.pm in @INC <@INC contains: .> at D:Website\cgi-bin\nup.pl line 4. BEGIN failed--compilation aborted at D:Website\cgi-bin\nup.pl line 4. Zeile 4 in der Perl-Datei ist bei mir: use strict; Mir scheint, irgendwas wird nicht gefunden? cu Conny |
|
|
![]()
Beitrag
#14
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo,
nun das ist mir jetzt vollkommen unverständlich. Die Fehlermeldung sagt, dass das Modul stickt.pm nicht gefunden wird, das hab ich aber nicht benutzt, weil es das gar nicht gibt. Also mach wir das folgende: Du nimmst den foldenden Code und ersetzt damit den in Deiner Perldatei. Dann passt Du noch die beiden Verzeichnisse an und veruchst es noch einmal. QUELLTEXT #!c:/perl/bin/perl # finde nicht verwendete bilder use strict; use warnings; use File::Find; my $home; my $picture_dir; my $picture; my @picture_files; my @html_files; my $html; my $scan_result; my $not_used=0; # hier das standardverzeichnis eintragen, aus dem die dateien gescannt werden sollen $home = 'c:/home/ingo/html/interpro_neu'; # hier das standardverzeichnis der bilder eintragen $picture_dir = 'c:/home/ingo/html/interpro_neu'; if ($ARGV[0]) {$home = $ARGV[0];} $home =~ s/\\/\//g; if ($ARGV[1]) {$picture_dir = $ARGV[1];} else {$picture_dir = $home;} $picture_dir =~ s/\\/\//g; # zu scannende dateien suchen find(\&find_html, $home); # bilder suchen find(\&find_picture, $picture_dir); print 1+$#html_files." HTML- und CSS-Dateien in $home gefunden.\n"; print 1+$#picture_files." Bilder in $picture_dir gefunden!\nDavon werden nicht verwendet:\n"; # zu scannende dateien sortieren @html_files = sort {uc($a) cmp uc($b)} @html_files; # bilder sortieren @picture_files = sort {uc($a) cmp uc($b)} @picture_files; foreach $picture (@picture_files) { foreach $html (@html_files) { #hier wird der scanner gerufen $scan_result = &scan($html, $picture); # wenn ein treffer gefunden, dann naechstes bild hernehmen if ($scan_result) { last; } } # wenn kein treffer, ausgeben und zählen unless ($scan_result) { print "$picture \n"; $not_used ++; } } print "Insgesamt werden $not_used Bilder nicht verwendet!\n"; # bilder finder --------------------------------------------------------------- sub find_picture { my $akt_file = $File::Find::name; push @picture_files,$akt_file if ($akt_file =~ /\.(jpg|gif|png)$/i); } # zu scannende dateien finden ------------------------------------------------- sub find_html { my $akt_file = $File::Find::name; push @html_files,$akt_file if ($akt_file =~ /\.(.?htm.?|css)$/i); } # löschen der gemeinsamen teile in den pfadangaben ---------------------------- sub del_common { my ($html, $picture_dir) = @_; my @html_dir; @html_dir = split('/', $html); foreach (@html_dir) { $picture_dir =~ s/^$_\///i; } return $picture_dir; } # aktuelle datei scannen ------------------------------------------------------ sub scan { my ($html,$picture)=@_; my $html_content; my $found; undef $/; $picture = del_common($html, $picture); open (IN,"< $html"); $html_content=<IN>; close IN; $found = $html_content =~ /$picture/; return $found; } Das ist bei mir ohne Fehler durchgelaufen und arbeitet jetzt richtig gut. Es ist jetzt auch möglich, dass man der Batch zwei Parameter übergibt: pic_find.bat c:\home\html\interpro\schulen c:\home\html\interpro\bilder Dafür muss die Batch noch so geändert werden: QUELLTEXT @echo off c:\perl\bin\perl.exe c:\programme\perlen\pic_find.pl %1 %2 > c:\programme\perlen\bilder_not_used.txt notepad c:\programme\perlen\bilder_not_used.txt Wenn man den zweiten Parameter weglässt geht das Script davon aus, dass er wie der erste heißen soll. Wird nichts übergeben, werden die Standardverzeichnisse genommen wie sie im Script angegeben sind. (siehe Kommentare) Gibt es eigentlich eine Möglichlkeit, dass ich das Script hier irgendwie hochladen kann, damit ich nicht immer alles posten muss? Ich mach aber erst mal Schluss für heute. Es gibt einen guten Südtiroler Lagrein (Rotwein) und eine lecker "Weib" die auf mich warten ![]() Der Beitrag wurde von i.b.g bearbeitet: 19.02.2005 - 19:16 |
|
|
![]()
Beitrag
#15
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo,
wenn man einen Link auf eine Batch-Datei angelegt hat, dann kann man einige Einstellungen in den Eigenschaften (Rechtsklick auf die *.lnk-Datei) vornehmen, die das Leben angenehmer machen. Für den hier diskutierten Fall könnte das sein: Registerkarte Programm 1. in der Befehlszeile an das Ende ein Leerzeichen+? - Wirkung: man bekommt beim Start der *.lnk ein kleines Fenster wo man die Parameter für die Batch eingeben kann. 2. Ausführen wird auf "Minimiert" gesetzt - Wirkung: es geht kein DOS-Fenster auf sondern nur das Feld in der Taskleiste. 3. Ein Häkchen bei Beenden beim Schließen - Wirkung: das DOS-Fenster wird automatisch geschlossen, wenn der letzte Befehl der Batch abgearbeitet ist. Wer dann noch will, kann der *.lnk ein anderes Symbol zuordenen. Sollte ich jetzt Trivialitäten genannt haben, so bitte ich um Entschuldigung. ![]() |
|
|
![]()
Beitrag
#16
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Moin Ingo,
ohne Dich jetzt -am Sonntagmorgen- auf die nerven gehen zu wollen, aber, auch nach einsetzen des letzten Codes bleibt es exakt bei der gleichen Fehlermeldung von weiter oben. Es *stolpert* über die aufforderung: 'use strickt' und meldet: Can't locate strickt.pm in @INC <@INC contains: .> at D:Website\cgi-bin\nup.pl line 4. Warum auch immer.... cu Conny |
|
|
![]()
Beitrag
#17
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo,
ZITAT(Conny @ 20.02.2005 - 10:59) ohne Dich jetzt -am Sonntagmorgen- auf die nerven gehen zu wollen ... Ach wo, das ist schon in Ordnung, denn es muss ja funktionieren. Ich hab meine Datei mal >> HIER << als Zip abgelegt. Du kannst Sie dort abholen. Sollte es dann immer noch nicht laufen, dann schreib einfach mal ein # vor die Zeile, denn eigentlich wird Sie nur benötigt, um bei der Programmierung Larry's Konventionen einzuhalten. Das muss doch zu packen sein! |
|
|
![]()
Beitrag
#18
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hi Ingo,
ZITAT(i.b.g @ 20.02.2005 - 11:24) ....Sollte es dann immer noch nicht laufen, dann schreib einfach mal ein # vor die Zeile... Die Idee (es aus zu kommentieren) hatte ich auch schon, hat leider nichts gebracht! Denn, die Fehlermeldung wiederholt sich dann einfach mit der nächsten Zeile: use warnings. Inzwischen glaube ich, daß es an der perl.exe liegt! (das ist die exe die bei xampp-light dabei war) Könntest Du mir nicht mal Deine perl.exe zukommen lassen? Damit wäre es unter Umständen schon aus der Welt! cu Conny |
|
|
![]()
Beitrag
#19
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo Conny,
das ist ja wie verhext. Ob das an der perl.exe liegt, vermag ich nicht zu sagen. Ich glaub es aber nicht. Ich hatte auch gehofft Andreas meldet sich noch einmal. Zunächst kannst Du die Zeile use warnings; auch auskommentieren. Nur die use File::Find; ist dringend notwendig, weil das Modul die Dateibäume durchsucht. Starten und "gucken wat er macht". Geht es wieder schief, dann solltest Du mal folgendes auf der Kommandozeile eingeben: c:\> perl -V > perlvers.txt Den Inhalt der perlvers.txt würde ich gern mal sehen; es könnte nämlich sein, dass Perl gar nicht richtig installiert ist, dann hilft die perl. exe auch nichts. Besonders interessant ist der Abschnitt am Ende: QUELLTEXT Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS Locally applied patches: ActivePerl Build 635 Built under MSWin32 Compiled at Feb 4 2003 15:34:21 %ENV: PERL="C:\PERL\bin" @INC: C:/Perl/lib C:/Perl/site/lib . |
|
|
![]()
Beitrag
#20
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hi Ingo,
langsam kommen wir die Sache näher. So wie es aussieht ist Perl tatsächlich nicht, oder nicht richtig installiert! Es gibt zwar eine Perl.exe bei mir auf dem Rechner, allerdings nicht wo man ihm vermuten wurde (C:\perl\bin) sondern in ein Apache-Ordner auf D: (Dort wo Apache auch instaliert ist.) Neben der Perl.exe gibt es nur noch die perl58.dll (ich nehme mal an, Version 5.8) und sonst nichts! Auf der Kommandozeile: D:\Apache\perl\bin\perl -V > perlvers.txt eingegeben gibt wieder eine Fehlermeldung: 'Kann Config.pm nicht finden'. Die txt wird zwar erstellt, bleibt aber leer. Fazit: Keine oder fehlerhafte installation! Frage: Wie und wo bekomme ich Perl heruntergeleden und richtig installiert? cu Conny |
|
|
![]()
Beitrag
#21
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo Conny,
ZITAT(Conny @ 20.02.2005 - 17:29) Frage: Wie und wo bekomme ich Perl heruntergeleden und richtig installiert? Der beste Weg ist, bei ActiveState ein Paket für Win herunterzuladen. Wie du dem Apachen dann aber sagst, wo er nach Perl suchen soll, weiß ich nicht, denn ich habe den nicht. Ich arbeite seit Ewigkeiten mit Jana. Hoffe, wir kommen dem Ziel damit näher. |
|
|
![]()
Beitrag
#22
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hi Ingo,
auf AktiveState war ich auch schon, ich fand es halt eine Menge Zeug, was man da runterladen soll... Nun habe ich es aber gemacht und es scheint zu funktionieren! ![]() Die 'bilder_not_used.txt' wurde erstellt und, ich meine, es wurde alles richtig ausgelesen. Danke! cu Conny |
|
|
![]()
Beitrag
#23
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
ZITAT(i.b.g @ 20.02.2005 - 15:54) Ich hatte auch gehofft Andreas meldet sich noch einmal. ![]() Ja, tut er ja auch! Bin aber das Wochenende nicht so zum Basteln gekommen. Die Frau war mit anderen Frauen in Köln auf Tour und ich habe das Haus gehütet und Tim gezeigt, wie er vom Stuhl auf den Tisch klettern kann, oder fast allein aus einem Glas Milch über seinen Pullover schütten muss ![]() Habe die letzte Version des Scriptes ausprobiert ... im Browser (auch wenn die Perl Datei im richtigen Verzeichnis liegt) wird sie nicht ausgeführt, der Perl Interpreter startet zwar kurz, aber irgendwie tut das Script nichts. Also die Batch: QUELLTEXT @echo off d:\perl\bin\perl.exe d:\www\filmf1\cgi-local\find_files.pl > d:\www\filmf1\cgi-local\bilder_not_used.txt notepad d:\www\filmf1\cgi-local\bilder_not_used.txt Variablen im Script: HTML # hier das standardverzeichnis eintragen, aus dem die dateien gescannt werden sollen $home = 'd:/www/filmf1/film/kritiken'; # hier das standardverzeichnis der bilder eintragen $picture_dir = 'd:/www/filmf1/grafic/jpeg'; Ausgabe des Perlscriptes: QUELLTEXT 357 HTML- und CSS-Dateien in d:/www/filmf1/film/kritiken gefunden. 0 Bilder in d:/www/filmf1/film/kritiken gefunden! Davon werden nicht verwendet: Insgesamt werden 0 Bilder nicht verwendet! 357 stimmt, aber das Verzeichnis für die Bilder passt irgendwie nicht. Und ich kann mir auch nicht vorstellen, dass die Bilder *alle* verwendet werden. Vor allen Dingen ist das Script schon nach 2 Sekunden durch ![]() Ich gucke noch mal ... hab's aber noch nicht verstanden ![]() Grüße Andreas - der sich jetzt allerdings erstmal an der Flasche Dimples vergreift, die er für's PC-Heile-Machen bekommen hat (wenigstens das kann ich ![]() Nachtrag: Habe jetzt mal QUELLTEXT if ($ARGV[1]) {$picture_dir = $ARGV[1];} else {$picture_dir = $home;} auskommentiert ... und jetzt läuft das Script. Kann ein wenig dauern bei knapp 18 MB Grafiken je max. 50 KB ...Nachtrag2: Ein Glas Dimple ist weg *g* Das Script läuft ... sehr wahrscheinlich *g* Mir fiel gerade auf, dass ich in einem anderen Ordner ebenfalls Kritiken habe, die sich aus dem gleichen Grafikordner bedienen. Also gerade mal ein wenig kopiert und das Script nochmal laufen lassen. Dauert 'n Viertelstündchen ... |
|
|
![]()
Beitrag
#24
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hi,
also, bei mir läuft es nun wohl so wie es soll. Habe eine *.lnk gebastelt, der die *.bat ansteuert. Die txt wird geschrieben und es werden über 2000(!) Bilder gelistet! (Das hat so lange gedauert, daß ich schon gedacht habe, es wurde schon wieder nicht klappen) Das es soviele Bilder sind, erklärt sich dadurch, daß die Pics-Verzeichnisse auch sgn. Depots haben in der die *wissentlich* nicht verwendete Bilder aufbewahrt werden (nach dem Moto: man kann nie wissen... ![]() Daraus kommt bei mir, lieber Ingo, der Wunsch auf, in der pl-Datei noch eine Zeile zu haben in der man die Ordner angeben kann, die außenvor gelassen werden sollen (also nicht durchsucht). Könntest Du das noch irgendwie hinein basteln? cu aus dem recht verschneitem Trier Conny |
|
|
![]()
Beitrag
#25
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
ZITAT(Conny @ 20.02.2005 - 21:20) Das es soviele Bilder sind, erklärt sich dadurch, daß die Pics-Verzeichnisse auch sgn. Depots haben in der die *wissentlich* nicht verwendete Bilder aufbewahrt werden <dumm>Äh, werden auch Unterverzeichnisse berücksichtigt? Bei den HTML Dateien auch?</dumm> Ansonsten sieht es so aus, als ob das Script auch bei mir funktioniert ... |
|
|
![]()
Beitrag
#26
|
|
is getting harder Gruppe: User Beiträge: 26 Mitglied seit: 24.09.2004 Mitglieds-Nr.: 3.770 ![]() |
Vielleicht hat ja jemand lust die Online-Version zu testen.
Kontrolliert werden jpg,jpeg,bmp,gif,png (Gross/Kleinschreibung ist egal) folgende Quelltextdateien werden kontrolliert: htm,html,php,php4,incl Die Datei liegt im obersten gewünschten Verzeichniss. Auch Verweise mit ../../ werden gefunden. bekannte Fehler: Es wird immer ein Bild zu Wenig angezeigt. MfG hondocrx QUELLTEXT <?php
function dirlist($dir) { $list = array(); $dp = opendir($dir); while($file = readdir($dp)) { if(!is_dir($dir."/" . $file)) $list[] = $dir. "/" . $file; else { if($file != ".." && $file != ".") { $clist = dirlist($dir."/".$file); foreach($clist as $file2) { array_push($list, $file2); } } } } return $list; } $list = dirlist($DOCUMENT_ROOT . substr($PHP_SELF,0,strrpos($PHP_SELF,"/"))); for ($counter_list=0;$counter_list<count($list);$counter_list++) { $endung=pathinfo($list[$counter_list]); if(eregi('jpg',$endung['extension']) || eregi('jpeg',$endung['extension']) || eregi('bmp',$endung['extension']) || eregi('gif',$endung['extension']) || eregi('png',$endung['extension'])) { $bild_url[]=$list[$counter_list]; } if (strtolower($endung['extension'])=='htm' || strtolower($endung['extension'])=='js' || strtolower($endung['extension'])=='php' || strtolower($endung['extension'])=='php4' || strtolower($endung['extension'])=='incl') { $dateizeilen = file($list[$counter_list]); for($count_dateizeilen=0;$count_dateizeilen < count($dateizeilen);$count_dateizeilen++) { if(eregi('.jpg',$dateizeilen[$count_dateizeilen]) || eregi('.jpeg',$dateizeilen[$count_dateizeilen]) || eregi('.bmp',$dateizeilen[$count_dateizeilen]) || eregi('.gif',$dateizeilen[$count_dateizeilen]) || eregi('.png',$dateizeilen[$count_dateizeilen])) { $dateizeilen[$count_dateizeilen]=str_replace('"','\'',$dateizeilen[$count_dateizeilen]); $zeile = explode('\'',$dateizeilen[$count_dateizeilen]); for($count_zeile=0;$count_zeile < count($zeile);$count_zeile++) { if(eregi('.jpg',$zeile[$count_zeile]) || eregi('.jpeg',$zeile[$count_zeile]) || eregi('.bmp',$zeile[$count_zeile]) || eregi('.gif',$zeile[$count_zeile]) || eregi('.png',$zeile[$count_zeile])) { if(eregi('http:',$zeile[$count_zeile])) { $quelltext[]=$zeile[$count_zeile]; } if(ereg('\.\.',$zeile[$count_zeile])) { $verzeichniswechsel=explode('..',$zeile[$count_zeile]); $temp_1=strrev(dirname($list[$counter_list])); for($count_verzeichniswechsel=0;$count_verzeichniswechsel < count($verzeichniswechsel)-1;$count_verzeichniswechsel++) { $temp_1=strchr($temp_1,'/'); $temp_1=substr($temp_1,1,strlen($temp_1)-1); } $quelltext[]=strrev($temp_1).$verzeichniswechsel[count($verzeichniswechsel)-1]; } $quelltext[] = dirname($list[$counter_list]).'/'.$zeile[$count_zeile]; } } } } } } $unbenutzt = array_diff($bild_url,$quelltext); for($i=0;$i < count($unbenutzt);$i++) { if($unbenutzt[$i]!='')echo $unbenutzt[$i].'<br>'; } ?> Der Beitrag wurde von hondocrx bearbeitet: 21.02.2005 - 18:17 |
|
|
![]()
Beitrag
#27
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo,
ZITAT(Andreas @ 20.02.2005 - 21:41) werden auch Unterverzeichnisse berücksichtigt? Bei den HTML Dateien auch? Ja die werden durch Find:File automatisch durchsucht. Die Zeilen mit dem $ARGV sind ja für die Übergabe von Parametern gedacht. Da muss einfach noch eine Bedingung rein und dann passt das. Das mit dem Ausschließen von Verzeichnissen ist an sich nicht kompliziert. Das mach ich heute abend mal. Ansonsten freut es mich, das es nun funktioniert. Dass das Script etwas Zeit braucht, ist normal. Es ist sucht sich alle Dateien (Bilder, HTML) und dann geht es für jedes Bild durch jede HTML bis ein Treffen gelandet wird oder eben nicht. Bei großen Seiten und vielen Bildern - da muss der Rechner schon rackern. |
|
|
![]()
Beitrag
#28
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
ZITAT(i.b.g @ 21.02.2005 - 7:29) Ja die werden durch Find:File automatisch durchsucht. ![]() Hab's aber auch gemerkt, nachdem ich das dann einfach ausprobiert habe. Sieht so aus, als ob es jetzt läuft. Allerdings bin ich über die Anzahl der unbenutzen JPGs entsetzt *g* Wie eingangs gesagt, das würde mich nach vorne bringen! Nun habe ich wieder WebSpace frei und muß nicht nach mehr betteln ![]() Grüße Andreas |
|
|
![]()
Beitrag
#29
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hallo Hondocrx,
ZITAT(hondocrx @ 20.02.2005 - 23:45) das Script funktioniert sowohl auf'm lokalen Server als auch im Internet. Das online Ergebnis findest Du >>HIER<< Nachteil: Auch hier bräuchte man eine Möglichkeit Ordner auszuschließen. Denn Bilder in Bildergalerien die JS gesteuert sind, werden sehr wohl benutzt, dennoch als 'Leiche' ausgewiesen. Ebenso mit Bilder die nach *draussen* verlinkt wurden (also nicht auf dem eigenen Webspace verwendung finden), sollte man ausschließen können. Vorteil der Online-Variante: die endlos großen Depots fallen weg! ![]() cu Conny |
|
|
![]()
Beitrag
#30
|
|
is getting harder Gruppe: User Beiträge: 26 Mitglied seit: 24.09.2004 Mitglieds-Nr.: 3.770 ![]() |
An dem Ordnerproblem wird gearbeitet. Hier stellt sich die Frage eine Datei anzulegen welche die Ordner enthält oder ob man ein Auswahlfeld vorgibt. Mal sehen.
Zu dem JS-Problem: Genau das sollte eigentlich funktionieren. Poste mal bitte einen Javacode wo dies so ist. MfG |
|
|
![]()
Beitrag
#31
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hallo,
eine Seite wo so'ne Slideshow zu finden ist, ist diese: SlideShow Das externe Script sieht so aus: HTML //*Steuert die Bildergalerie ,Lagerhallenbrand, auf bilder.htm*/ //*Slide Show Steuerung*// var currentSlide = 0; var currentDirection = 1; var delay = 4500; var lastTime = new Date().getTime() + delay; var slides = new Array(); slides[0] = 'galerie/aaa.jpg'; slides[1] = 'galerie/brand/brand01.jpg'; slides[2] = 'galerie/brand/brand02.jpg'; <!-- und weitere Bilder... --> slides[36] = 'galerie/brand/brand36.jpg'; slideshow(1); function slideshow(direction) { if (null == direction) { if ((lastTime + delay) > new Date().getTime()) { direction = 0; } else { direction = currentDirection; } } else { currentDirection = direction; } if (direction != 0) { if (direction > 0) { currentSlide++; if (currentSlide > (slides.length - 1)) { currentSlide = 0; } } else { currentSlide = currentSlide-1; if (currentSlide < 0) { currentSlide = (slides.length - 1); } } lastTime = new Date().getTime(); update(slides[currentSlide]); setTimeout("slideshow();",delay); } } var currentIndex = 0; var currentIsSuper = false; function update(url, index, isSuper) { currentIndex = index; currentIsSuper = isSuper; if (null != document['Bilder']) { if (isSuper) { document['Bilder'].src='../../gfbild/smily.gif'; } else { document['Bilder'].src='../../gfbild/smily.gif'; } } return; } Das PHP-Script wirft aber u.a. genau diese Bilder aus. (Auszug) /home/www/web784/html/galerie/brand/brand04.jpg /home/www/web784/html/galerie/brand/brand05.jpg /home/www/web784/html/galerie/brand/brand06.jpg Ich hoffe, das bringt Dich weiter. cu Conny |
|
|
![]()
Beitrag
#32
|
|
is getting harder Gruppe: User Beiträge: 26 Mitglied seit: 24.09.2004 Mitglieds-Nr.: 3.770 ![]() |
Ich geh mal davon aus das mein Script den Code für die Slideshow nicht finden kann.
Ist dieser Code extern eingebunden und wenn ja welchen Namen hat das Script? MfG |
|
|
![]()
Beitrag
#33
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hi,
Ja, das Script ist extern eingebunden der Pfad wäre: http://www.trimmelterhof.de/sheets/galerie_brand.js cu Conny |
|
|
![]()
Beitrag
#34
|
|
is getting harder Gruppe: User Beiträge: 26 Mitglied seit: 24.09.2004 Mitglieds-Nr.: 3.770 ![]() |
Wenn Du das Script jetzt noch einal testest sollte es gehen.
Habe js mit dazugenommen. MfG |
|
|
![]()
Beitrag
#35
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hi,
nö, hat sich nicht gebessert: Unused Pics Alles was nach *galerie* kommt ist definitiv in Gebrauch! Alle Bilder (hinter Galerie) sind Script (JS) gesteuert. (wie das Beispiel Brand) Mir scheint, das die *Verbindung* zwischen den Ordner Galerie und die im Order Sheets befindliche JavaScripte nicht gemacht wird (woher auch..). Wird der Ordner Galerie ohne diesen zusammenhang, als 'stand allone' sozusagen, untersucht, ist das Ergebnis natürlich richtig (nähmlich alles unused). Es wäre imho leichter 'galerie' auszuschließen (also den Ordner) cu Conny Der Beitrag wurde von Conny bearbeitet: 21.02.2005 - 16:39 |
|
|
![]()
Beitrag
#36
|
|
is getting harder Gruppe: User Beiträge: 26 Mitglied seit: 24.09.2004 Mitglieds-Nr.: 3.770 ![]() |
Das Script findet alle Dateien welche im gleichen Ordner wie das Script liegen und auch alle die darunter platziert sind.
Wenn Du Dir das Array $list mal ausgeben lässt wirst Du sehen das alle Dateien gefunden werden. Den Ordner Galerie auszuschließen wird es nicht geben. Heute oder morgen Nacht wird eine Ordnerauswahl eingebaut werden. Warum das Script bei Dir nicht geht weiß ich nicht. Ich hab es heute unter einem wirklich großen Auftritt probiert und es wurden alle von mir als Dummy-Daten hinterlegten Bilder gefunden. Hier noch einmal der Code. QUELLTEXT <?php
function dirlist($dir) { $list = array(); $dp = opendir($dir); while($file = readdir($dp)) { if(!is_dir($dir."/" . $file)) $list[] = $dir. "/" . $file; else { if($file != ".." && $file != ".") { $clist = dirlist($dir."/".$file); foreach($clist as $file2) { array_push($list, $file2); } } } } return $list; } $list = dirlist($DOCUMENT_ROOT . substr($PHP_SELF,0,strrpos($PHP_SELF,"/"))); for ($counter_list=0;$counter_list<count($list);$counter_list++) { $endung=pathinfo($list[$counter_list]); if(eregi('jpg',$endung['extension']) || eregi('jpeg',$endung['extension']) || eregi('bmp',$endung['extension']) || eregi('gif',$endung['extension']) || eregi('png',$endung['extension'])) { $bild_url[]=$list[$counter_list]; } if (strtolower($endung['extension'])=='htm' || strtolower($endung['extension'])=='js' || strtolower($endung['extension'])=='php' || strtolower($endung['extension'])=='php4' || strtolower($endung['extension'])=='incl') { $dateizeilen = file($list[$counter_list]); for($count_dateizeilen=0;$count_dateizeilen < count($dateizeilen);$count_dateizeilen++) { if(eregi('.jpg',$dateizeilen[$count_dateizeilen]) || eregi('.jpeg',$dateizeilen[$count_dateizeilen]) || eregi('.bmp',$dateizeilen[$count_dateizeilen]) || eregi('.gif',$dateizeilen[$count_dateizeilen]) || eregi('.png',$dateizeilen[$count_dateizeilen])) { $dateizeilen[$count_dateizeilen]=str_replace('"','\'',$dateizeilen[$count_dateizeilen]); $zeile = explode('\'',$dateizeilen[$count_dateizeilen]); for($count_zeile=0;$count_zeile < count($zeile);$count_zeile++) { if(eregi('.jpg',$zeile[$count_zeile]) || eregi('.jpeg',$zeile[$count_zeile]) || eregi('.bmp',$zeile[$count_zeile]) || eregi('.gif',$zeile[$count_zeile]) || eregi('.png',$zeile[$count_zeile])) { if(eregi('http:',$zeile[$count_zeile])) { $quelltext[]=$zeile[$count_zeile]; } if(ereg('\.\.',$zeile[$count_zeile])) { $verzeichniswechsel=explode('..',$zeile[$count_zeile]); $temp_1=strrev(dirname($list[$counter_list])); for($count_verzeichniswechsel=0;$count_verzeichniswechsel < count($verzeichniswechsel)-1;$count_verzeichniswechsel++) { $temp_1=strchr($temp_1,'/'); $temp_1=substr($temp_1,1,strlen($temp_1)-1); } $quelltext[]=strrev($temp_1).$verzeichniswechsel[count($verzeichniswechsel)-1]; } $quelltext[] = dirname($list[$counter_list]).'/'.$zeile[$count_zeile]; } } } } } } $unbenutzt = array_diff($bild_url,$quelltext); for($i=0;$i < count($unbenutzt);$i++) { if($unbenutzt[$i]!='')echo $unbenutzt[$i].'<br>'; } ?> |
|
|
![]()
Beitrag
#37
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hallo,
ZITAT ...Warum das Script bei Dir nicht geht weiß ich nicht. Ich hab es heute unter einem wirklich großen Auftritt probiert und es wurden alle von mir als Dummy-Daten hinterlegten Bilder gefunden.... Schade eigentlich, denn ich bin der php-Sprache auch nicht mächtig genug Dir eine Hlfe zu sein ![]() Fest steht aber, das was er ausgibt ist in gebrauch und das extra eingebaute DUMMY wurde nicht gefunden! DUMMY Bild DUMMY Pfad: (http://www.trimmelterhof.de/pics/jpbild/DUMMY.JPG) Link zur php Seite. cu Conny PS. Script wurde auch erneuert. |
|
|
![]()
Beitrag
#38
|
|
____________________ ![]() Gruppe: Admin Beiträge: 1.220 Mitglied seit: 20.10.2001 Mitglieds-Nr.: 3 ![]() |
Oh Gott, Conny!
Hast Du der Fledermaus die Flügel abgeschnitten?! ![]() |
|
|
![]()
Beitrag
#39
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Na, hör mal!
Das ist mein persönlicher Beschützer !! ![]() |
|
|
![]()
Beitrag
#40
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo,
ich hab da in den letzten Tagen nicht so viel Zeit gehabt, aber ich bin mit dem Unbenutzte-Bilder-Finden ein Stückchen weiter gekommen. Die neueste Version kann >> HIER << heruntergeladen werden. Installation: QUELLTEXT 1. Zip herunterladen 2. in das cgi-bin des lokalen HTTP-Servers entpacken ist 7Zip gepackt und enthält ein komplettes Verzeichnis mit drei Dateien picnotused.pl das Perlscript picnotused.cfg die Konfiguration picnotused.css Stylesheet für die Ausgabe 3. Kontrolle, ob auch Perl installiert ist 4. im Browser eingeben (Achtung Beispiel!) http://localhost/cgi-bin/picnotused/picnotused.pl Es sollte sich des Programm öffnen und die Möglichkeiten * Start Suche * Optionen anbieten. Die Konfiguration ist kommentiert. Würde mich freuen, wenn es einem nützt. Bei mir tut es seinen Dienst. Achtung, wenn große Homepages gescannt werden dauert es eine Zeit bis die Ausgabe erscheint. |
|
|
![]()
Beitrag
#41
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hi Ingo,
es scheint zu funktionieren! Mich befremdet aber, daß die Ausgabe so aussieht: QUELLTEXT Suche nach unbenutzten Bildern Start Suche Optionen 106 zu scannende Dateien in: D:/Website gefunden. nicht berücksichtigte Verzeichnisse: A b l a g e | f o r e n | //* Hier zwischen weitere vertikale Verzeichnisse, die , die unten auch Horizontal stehen *// s h e e t s Ablage|foren|galerie|include|movie|perl|scripts|sheets //* Dann folgt: *// 175 Bilder in: D:/Website/pics gefunden. nicht berücksichtigte Verzeichnisse: D e p o t _ J P G | //* Also wieder erst Vertikal, dann Horizontal *// Depot_JPG|Depot_Gif Davon werden nicht verwendet: D:/Website/pics/gfbild/adobe.gif D:/Website/pics/gfbild/lesen.gif D:/Website/pics/gfbild/pc-grr.gif D:/Website/pics/gfbild/plan-0a.gif D:/Website/pics/gfbild/play.gif D:/Website/pics/gfbild/rev.gif D:/Website/pics/gfbild/stop.gif //* Und weitere Bilder... *// Insgesamt werden 22 Bilder nicht verwendet! (c) ibs&p 2005, Version vom 26.02.2005 19:42 Einige Bilder sind tatsächlich *ausser Betrieb*, einige aber definitiv in Gebrauch! So sind *play.gif* rev und stop die Gifs für die Steuerung der Bildergalerien und keine Leichen. cu Conny |
|
|
![]()
Beitrag
#42
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hallo Ingo,
bin in der Sache ein kleinen Schritt weiter. Einige Bilder werden deswegen als *Leiche* angezeigt, weil sie sich -bei mir- weder in eine HTML-, noch in eine PHP-Datei befinden, sondern in eine *.DAT Datei die dann mittels PHP includiert wird. Schleierhaft ist mir immer noch die vertikale Ausgabe des Textes im Perl-Script. *Gewollt* ist das doch wohl nicht oder? cu Conny |
|
|
![]()
Beitrag
#43
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo Conny,
melde mich jetzt erst, weil ich mit meiner Tochter eine Hausarbeit in Biologie angefertigt habe. "Die Honigbiene" - war nicht so schlimm, weil der Großvater Imker ist. Die Erweiterungen sind in der nächsten Version variabel vom Nutzer vorgebbar. Das mit der Vertikalen Ausgabe ist seltsam und bei mir noch nicht aufgetreten. Es ist aber so, dass das Script im Moment vollständige Pfade benötigt. D.h. Du musst das noch so machen: QUELLTEXT # Konfiguration für das Suchen nach unbenutzten Bildern # ibs&p 2005 # picnotused.cfg # # Hier können die Verzeichnisse eingetragen werden, wo die zu scannenden oder # sonstigen Dateien sich befinden. # Dateien sind zurzeit: *htm*,css,php*,js # In einer nächsten Version können hier auch die Dateiendungen hinterlegt werden, # die gescannt werden sollen. # Es können mehrer Verzeichnisse mit Komma getrennt eingegeben werden. HOME=c:/home/ingo/html/interpro_neu # # das gleiche für die Bilder # Bilder sind zurzeit: jpg, gif, png BILD=c:/home/ingo/html/interpro_neu/bilder # # Verzeichnisse, die unter HOME liegen und nicht gescannt werden sollen NOHTML=c:/home/ingo/html/interpro_neu/schulen,c:/home/ingo/html/interpro_neu/kultur # # Verzeichnisse, die unter BILD liegen und nicht ausgelesen weden sollen NOBILD=c:/home/ingo/html/interpro_neu/bilder/mbt,c:/home/ingo/html/interpro_neu/bilder/icons Könnte sein, dass es daran liegt. Und keine Angst vor langen Zeilen, denn solange Du einfach weiterschreibst und dem "textarea" den Zeilenumbruch überlässt und nicht Enter drückst, bleibt es eine einzige Zeile. Ansonsten hat es wohl im Wesentlichen richtig gearbeitet. [EDIT] Sorry, Sorry, Code mit Testresten ins Netz gestellt!!! ![]() Werde nachher gleich eine bereinigte Version zum Download ablegen. [/EDIT] Der Beitrag wurde von i.b.g bearbeitet: 27.02.2005 - 19:01 |
|
|
![]()
Beitrag
#44
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo,
so kleinen Bug behoben. Problem war die split-Funktion mit der man Textvariablen zu Arrays konvertieren kann. QUELLTEXT my @nohtml = split ('|', $nohtml); Ergibt ein Array, wo jeweils ein Zeichen ein Element des Arrays ist.QUELLTEXT my @nohtml = split ('\|', $nohtml); Wenn man den | mit \ maskiert, dann wird der | als Trennzeichen zwischen Zeichenketten erkannt. Es ist zwar richtig, dass split mit einer Regexp umgehen kann, aber dass zwischen Hochkommata gesetzte Zeichen genauso wie in einer Regexp behandelt werden, war mir bisher unklar. Da wirst'e alt wie 'ne Kuh und lernst immer noch dazu. ![]() |
|
|
![]()
Beitrag
#45
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hallo Ingo,
herzlichen Glückwunsch ![]() DasScript arbeitet -bei mir- nun fehlerfrei!! Herzlichen Dank für die Arbeit und die Mühe die Du Dir gemacht hast. ![]() cu Conny (Der immer schon gesagt hat: "Eine Kuh macht muh, viele Kühe machen mühe" ![]() |
|
|
![]()
Beitrag
#46
|
|
Weiss zuviel!! ![]() Gruppe: Mods Beiträge: 668 Mitglied seit: 19.04.2002 Wohnort: Grimmen Mitglieds-Nr.: 385 ![]() |
Hallo Andreas, Hallo Conny und alle anderen,
habe das Suchscript nun so erweitert, dass neben den fest "verdrahteten" Dateierweiterungen auch eigene in der Konfiguration angegeben werden können. Neueste Version wie immer >> HIER <<!! |
|
|
![]()
Beitrag
#47
|
|
Kommt Zeit, kommt Rat, kommt Conrad! ![]() Gruppe: Mods Beiträge: 1.169 Mitglied seit: 21.11.2001 Wohnort: Altenkirchen, Westerwald Mitglieds-Nr.: 42 ![]() |
Hallo Ingo,
hab' die neue Version gerade mal durchlaufen lassen... PERFEKT! ![]() Das Script arbeitet fehlerfrei, auch die *.dat-Dateien werden nun korrekt ausgelesen. cu Conny |
|
|
Google Bot |
![]()
Beitrag
#
|
![]() Google Ads ![]() |
|
|
|
![]() ![]() |
![]() |
Vereinfachte Darstellung | Aktuelles Datum: 29.08.2025 - 11:24 |