Listage d'un répertoire dans un fichier HTML
alain Adelmar
Rep2html est un script Perl qui liste un
répertoire dans un fichier html du nom du répertoire précédé de
rep_ comme, rep_Documents.html. C'est plus jolie que dans la
console et plus pratique ensuite pour ouvrir car les fichiers sont
représentés sous forme de liens, donc ouvrable d'un seul clic de
souris, et puis ça laisse des traces, ce fichier et comme une image du
contenu. Vous pouvez bien sùr l'appeler avec des options qui définirons
les renseignements que vous désirez voir apparaitre sur ce fichier.
Il aura ce look à peut prêt:
Pour une meilleure conpréhention j'ai directement laisser la colorisation du code Perl par Scite (l'éditeur libre qui m'à tant aidé depuis de nombreuses années sur Linux mais aussi sur Windows).
Si vous désirez le code il ce trouve sur le site ici (surement ./rep2html).
alain Adelmar
#!/usr/bin/perl -w
#!perl -w
# remd: liste le contenu des repertoires désiré dans un fichier rep.html et un rep.dat.*
# requier le module FrDate.pm pour l'affichage de (la date et l'heure en français) *
# écris par Alain Adelmar aadelmar@free.fr _ peut être utiliser sur tout OS (Lx, M$) *
# Multi environement (UNIX-Like, MicroSoft, msys, cygwin)_ version:2.2 du 20/03/2004 *
# Usage: rep2html [repertoire] pour avoir un repertoire au choix *
# rep2html pour avoir le repertoire courant (defaut) : *
# ------------------écrit par alain Adelmar -------------------------------------------*
# Enjoyed, that's a aadelmar's script, fun free and french "hé, ouai mon pote" *
#--------------------------------------------------------------------------------------*
use
Cwd;
$dir
= cwd
;
use
FrDate;
$mod_affichage
= 2
;
$fd
= maintenant
($mod_affichage
);
my
$vide =
" "
x
30;
my
$x =
"*-" x
25;
my
$tiret
= "-"
x50;
my
$nlr =
0;
my
$al =
"\t=== A_l_a_i_n -\/\/- A_d_e_l_m_a_r === |"
;
my
$lbl =
"$x\n$al\n$x\n\n"
;
my
$mi =
"<hr\>alain Adelmar <a href=\"mailto:aadelmar\@free.fr\"\>aadelmar\@free.fr<\/a\>\n"
;
if
(@ARGV)
{
if(
$ARGV[0
] =~
/^-/)
{
s/-()/$1/
;
$argv
=
$1;
$d
=
$ARGV[1
];
print
"$x\n$al\n\n$x\n\n"
;
}
else
{
$d
=
$ARGV[0
];
print
"$x\n$al\n\n$x\n\n"
;
}
}
else
{
print
print
"usage: rep2html [répertoire] \n"
;
print
"Indiquez le dossier a traiter:\n"
;
chomp(
$d =
<STDIN
>);
}
format
STDOUT_TOP
=
Page
@<<
$%
Fichier
Date du
dernier
changement
=====================
===========================
.
if
($d
eq ""
) {
$d
= $dir
;
}
else
{
unless
(-d
$d)
{
print
"Entrez un chemin de fichier valide:\n"
;
$d
=
<STDIN>;
chomp
$d;
}
}
if
($ENV{
"MACHTYPE"}=~
/[msys|cygwin|gnu]$/
) {
$gnus++;
print
"this is a real gnu OS, congratulation\n"
;
}
elsif
($ENV{
"PATH"}=~
/^\//)
{
$gnus++;
print
"this is a real gnu OS, congratulation\n"
;
}
@gnul
= (
"\\",
"\/");
@ds
= split
(/$gnul[$gnus]/
, $d
);
$ds
= pop
@ds;
$fout
= "rep_"
.
"$ds" .
".html"
;
&gnotise
($fout);
$fout_dat
= "rep_"
.
"$ds" .
".dat";
&gnotise
($fout_dat);
open
OUT,
">$fout"
or die
"Ouverture du fichier rep impossible $!"
;
print
OUT "<HTML\>\n\t<head\>\n\t\t<meta http-equiv=\"Content-Type\" content=\"text\/html;
charset=iso-8859-1\"\>\n\t\t<meta name=\"author\" content=\"adelmar alain et
Perl\"\>\n\t<\/head\>\n<body\><br>\n"
;
print
OUT "Edité automatiquement par le script rep2html\.pl le: "
.
"$fd" .
"\nn\'efféctuez pas
de modifications (SVP)\.\n<hr\>\n"
;
open
OUTDAT,
">$fout_dat"
or die
"Screugneugneu $fout_dat ne veux pas souvrir $!"
;
print
OUTDAT "Edité automatiquement par le script rep\.pl le: "
.
"$fd" .
"\nn\'efféctuez pas de modifications (SVP)\.\n"
;
opendir
R,
"$d" or
die
"Ouverture repertoire impossible $!"
;
$opd
= 1
;
foreach
$file (
sort readdir
R){
$u++;
next
if (
$file =~
/^\./);
$frd
= datefichier
($mod_affichage
, $opd
, $file
);
$line
= ":$file\n\t$frd\n"
;
if(
-d $file
) {
$reptmp
=
"d";
print
OUT
"<img SRC=\"folder.jpg\"\> <b\><a href=\"$d"
.
"$gnul[$gnus]"
. "$file\"\>$file<\/a\><\/b\><br\>
<div align=center\>$frd<\/div\><br\>\n"
;
write
;
print
OUTDAT
"$reptmp $line";
}
elsif(
-f $file
) {
print
OUT
"<img SRC=\"file.jpg\"\> <a href=\"$d"
.
"$gnul[$gnus]"
. "$file\"\>$file<\/a\><br\><div align=center\>$frd
<\/div\><br\>\n";
#damned avec remd: je pourrai carrement afficher le commentaire � cot� du liens (but no alias sur M$)
$reptmp
=
"f";
$rem
=
&remdthat
($file);
write
;
if
($argv
eq
"c")
{
print
OUTDAT
"$reptmp $line\n$rem\n";
}
print
OUTDAT
"$reptmp $line";
}
else
{
print
OUT
"<img SRC=\"file.jpg\"\> <a href=\"$d"
.
"$gnul[$gnus]"
. "$file\"\>$file<\/a\><br\><div align=center\>$frd
<\/div\><br\>\n";
#damned avec remd: je pourrai carrement afficher le commentaire � cot� du liens (but no alias sur M$)
$reptmp
=
"f";
$rem
=
&remdthat
($file);
write
;
if
($argv
eq
"c")
{
print
OUTDAT
"$reptmp $line\n$rem\n";
}
print
OUTDAT
"$reptmp $line";
}
}
closedir
R or
die
"Fermeture du repertoire impossible $!"
;
print
OUTDAT "\n$lbl\n"
;
close
OUTDAT
|| die
"Fartoi encoula granda connasse, 30000 fois saloperie ce ptain de $fout_dat
ne veut pas ce fermer $!"
;
print
OUT "$mi\n"
;
close
OUT or
die
"Fermeture impossible bordel $!"
;
print
"nombre de fichier traite $u\n"
;
print
"\n\nUn fichier $fout a été créé ainsi qu'un fichier $fout_dat\nBonne journée\nalain\n"
;
sub
gnotise($fili
) {
my(
$fili)=
@_;
if
(-e
$fili)
{
$arch
=
"$fili"
. "~"
;
rename
$fili,
$arch
or die
"impossible de faire comme cela $!"
;
}
}
sub
remdthat
{
my(
$file)=@_
;
(@contenu
, @remd
)= ""
;
$filnm
= "$d"
.
"$gnul[$gnus]"
. "$file"
;
open
F,
"$filnm"
or die
"Ouverture de $file impossible $!"
;
@contenu
= F
;
$nlr
= 0
;
foreach
$l(@contenu
) {
if
($nlr
>=
1)
{
chomp
$l;
push
@remd,
$l;
goto
LABELLE
if
($nlr
== 1
);
$nlr
--;
}
elsif
($l
=~
/remd:/)
{
chomp
$l;
push
@remd,
$l;
print
"ok pour $l\n"
;
$nlr
=
5;
# nombre de lignes de commantaires +1, changer le nombres ici
}
}
LABELLE:
close F
||
die "Fermeture de $file compromise $!"
;
$rem
= join
("\n\t",
@remd);
return
$rem;
}
format
STDOUT
=
@<
<<<
<<<
<<<
<<<
<<<
<<<
<<<
<<<<
@
<<<
<<<
<<<
<<<
<<<
<<<
<<<
<<<
$file, $frd
.
END;
>|8O°) alain adelmar alias asynchrone