précédant | suivant | sommaire

Exemple:  RepByExt.pl     (répertorie les fichiers de même extentions et bien plus...)



Ce script Perl créé automatiquement un fichier qui listera dans l'ordre tout les fichiers aillant la même extentions.
Exemple: Vous désirez avoir la liste de toutes les bibliothéques (.dll)  de C:\Windows\system, ou des (.vxd et .ocx).
ce script vous créera un fichier "rep_par_dll.dat" contenant alphabétiquement la liste des dll trouvées. (pratique)
Avec l'option -h il vous sortira un fichier rep_par_dll.html et chaque fichier du répértoire sera ouvrable depuis le lien qui le représante.
Surtout qu'en modifiant un peu ce script vous pouvez lui demander d'accomplir une tâche sur tout les fichiers ayant la même extention dans un répertoire voulu. (Encore plus pratique).

Alain Adelmar                                                                             aadelmar@free.fr


vieux script qui répértorié par extention, dérnière mouture de ce script plus bas dans la page (sans icone) et dernier avec icones

#!perl -w
# remd: liste tout les fichiers et sous-répértoires du repertoires désiré dans un fichier rep.dat
# ou seulement les fichiers ayant l'extention ou les extentions désirés. Pratique
#            === a_l_a_i_n -//- a_d_e_l_m_a_r ===  aadelmar@wanadoo.fr
$i = 0;
$dt = "\nFait le : " . localtime(time) . "\n";
print "Indiquez le dossier a traiter:\n";
chomp ( $dir = <STDIN>);

if ( $dir !~ /\\$/) {
 $dir = $dir . "\\";
 }
 
opendir R, " $dir" or die "Ouverture repertoire impossible $!";
foreach $file (sort readdir R) {
 $file = "$file\n";
 print <STDOUT>, $file;
 push @f_du_rep, $file;
 }
#si vous désirez faire qq aux fichier du répértoire c'est là
closedir R or die "Fermeture du repertoire impossible $!";

print "voulez vous une liste par extention[s]\n(entrez l'extention ex: .html,.txt)ou\ncontinuer pour le contenu du répertoire [Enter]\n";
chomp ( $resp = <STDIN>);

if ( $resp eq "") {
 $fout = "$dir" . "rep.dat";
 open F, ">$fout" or die "Ouverture du fichier rep impossible $!";
 print F @f_du_rep;
 print F $dt;
 close F or die "Fermeture impossible bordel $!";
 print "Le contenu du répertoire à était copier dans $fout\nTchao! bonne journée\n";
 }
else {
 #on place la liste des extentions dans une variable liste, car on n'en connais pas le nombre.
 @ext =split( /,/, $resp);
 
 print "$ext[0]\n";
 print "$ext[1]\n";

 for ($ext[0] .. $#ext) {
  foreach $file(@f_du_rep) {
   if ( $file =~ /($ext[$i])$/) {
    push @extn, $file;
 
    }
   }
  $i++;
  }
 
 # si vous voulez changer d'endroit pour ecrire le fichier liste oter le premier "$dir"
 $fout = "$dir" . "rep_by_" . "$ext[0]" . '.dat';
 
 open FE, ">$fout" or die "Ouverture de $fout impossible $!";
 print FE @extn;
 print FE $dt;
 close FE or die "fermeture de $fout impossible $!";
 }
 
 

END;

retour en haut



Dernière mouture de ce script (sans icones) ci-dessous avec (encore plus bas):

#!/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   *
# On peut demander ou avoir le résultat: a) repertoire courant ou b)repertoire lister  *
# Enjoyed, that's a aadelmar's script, fun free and french     "hé, ouai mon pote"     *
#--------------------------------------------------------------------------------------* 

use Cwd;
$dir = cwd;

use FrDate;
$mod_affichage = 7;
$fd = maintenant($mod_affichage);

if (@ARGV) {
  
$d = $ARGV[0];
}

$i = $j =0;
$x ="*-" x 25;
$al = "\t=== A_l_a_i_n -\/\/- A_d_e_l_m_a_r ===      |";
print "$x\n$al\n\n$x\n\n";
print "Indiquez le dossier a traiter:\n";
chomp($d = <STDIN>);


opendir R, "$d" or die "Ouverture repertoire impossible $!";
   
print "$x\n$al\n$x\n";
   
foreach $file(sort readdir R){
      
$file = "$file\n";
      
print $file;
      
push @repertoire, $file;
   
}        
closedir R or die "Fermeture du repertoire impossible $!";

#if ($d =~/\w\\$/) {   # M$
if ($d =~/\w\/$/) {
   
$fout = "$d" . "rep.html";
   
$fout_dat = "$d" . "rep.dat";
   
}
else {
  
$fout = "$d" . "\/rep" . "\.html";
  
$fout_dat = "$d" . "\/rep" . "\.dat";
  
while (-e $fout) {
    
$fout = "$d" . "\/rep_" . "$i\.html";
    
$i++;
      
}
   
while (-e $fout_dat) {
      
$fout_dat = "$d" . "\/rep_" . "$j\.dat";
      
$j++;
      
}
   
}                


open F, ">$fout" or die "Ouverture du fichier rep impossible $!";
   
print F "<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 F "Edité automatiquement par le script rep\.pl le: " .localtime(time) . "\nn\'efféctuez pas
de modifications (SVP)\.\n<hr\>\n"
;
   
open FDAT, ">$fout_dat" or die "Screugneugneu $fout_dat ne veux pas souvrir $!";
   
print FDAT "Edité automatiquement par le script rep\.pl le: " .localtime(time) . "\nn\'efféctuez pas de modifications (SVP)\.\n";
   
foreach $ft(@repertoire) {
      
chomp $ft;
      
print F "\t<a href=\"$ft\"\>$ft<\/a\><br\>\n";
      
print FDAT "$ft\n";
      
# damned avec remd: je pourrai carrement afficher le commentaire à coté du liens (but no alias sur Windows)
      
}
   
close FDAT || die "Fartoi encoula granda connasse, 30000 fois saloperie ce ptain de $fout_dat
ne veut pas ce fermer $!"
;
close F or die "Fermeture impossible bordel $!";

print "\n\nUn fichier $fout a été créé ainsi qu'un fichier $fout_dat\nBonne journée\nalain\n";

END;


retour en haut de page
idem avec icones

#!/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épértoire] \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\"\>&nbsp;&nbsp;<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\"\>&nbsp;&nbsp;<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\"\>&nbsp;&nbsp;<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;


précédant | suivant | sommaire