précédant | suivant | sommaire

cp4chg_ext.pl

a_a_d_e_l_m_a_r@f_r_e_e.fr

#!perl -w
# remd: changer les extentions aux fichiers voulus et meme le nom lui meme (voir ligne 58 et 59). alain Adelmar.
$x = 'x=' x 30;        # pour faire joli

print "Bonjour, dans quel dossier voulez vous faire des modifications\n";
chomp($resp_dir = <STDIN>);

# au cas ou il y ai une erreur dans la saisie prendre le repertoire pere avant l'erreur de façon a lister les rep fils
while (! -e "$resp_dir") {
        
($rootdir, $reste) = split(/\\$/, $resp_dir);
        
$resp_dir = "$rootdir";
        
open DIR, "$resp_dir" or die "Ouverture du repertoire $resp_dir impossible $!";
        
@lsdir = readdir(DIR);
        
close DIR or die "Fermeture impossible $!";
        
print STDOUT @lsdir;
        
print "\n$x\n";
        
print "affiner votre séléction\n";
        
chomp($resp_dir = <STDIN>);
}

# si repertoire ok, lister ses fichiers et extentions puis pousser le tout dans une @var_liste
opendir DIR, "$resp_dir" or die "Ouverture du repertoire $resp_dir impossible $!";
foreach $file (sort readdir DIR) {
        
$file = "$file\n";
        
print <STDOUT>, $file;
        
push @lsdir, $file;
        
}
# on aurai pu ecrire juste :               @lsdir = readdir(DIR);
closedir DIR or die "Fermeture impossible $!";

#PATH mes frères n'oublions pas, quil faudra stocker le chemin 
$road66 = "$resp_dir" . "\\";

print "\n$x\nquelle extentions voulez vous modifier:\n";
chomp($extini = <STDIN>);
while (! &correcte($extini)) {
        
print "veuillez entrer une extention correcte (3caracteres), expl: txt\n";
        
chomp($extini = <STDIN>);
}

print "par quelle extention voulez vous la remplacer?\nnotez que vous aurez a valider chaque chagement\n";
chomp($extvoulu = <STDIN>);
while (! &correcte($extvoulu)) {
        
print "veuillez entrer une extention correcte, expl: xxx\n";
        
chomp($extvoulu = <STDIN>);
}
# attention extention ne contient que 3 caract et non pas ".xxx" (4)
@contenu = <F>;

foreach $file(@lsdir) {
        
chomp $file;
        
$fl = $file;                        
        
# je vais me servir de $fl pour le filename_long ( avec path ) 
        
$fl = "$road66" . "$fl";        
                
        
next if ($file eq "\.\n"|"\.\.\n");    # saquer les . et .. de tout les rep
        
# selectionne les fichiers à modifier
        
if ($file =~ /()\.($extini)$/i) {                # a modifier ici pour chg plus radical avant col 25-27
                
($filename, $ext) = split(/\./, $file);        # idem ici critére de split
                
$fileout = "$road66" . "$filename" . "\." . "$extvoulu"; 
                
print "modification de $file en $fileout : \[O\/N\]\n";
                
$resp = <STDIN>;
                
chomp $resp;
                
# a remplacer par une sub oui_non($resp)
                
if ($resp =~ /^o|YES|oui|ok/i) {
                        
rename $fl, $fileout;     
                        
# ou si on désire faire des copies d'abord (uncommante les lignes ci-dessous) et mettre # au dessus
                        
                        
#open F, "$fl" or die "Ouverture impossible du fichier $fl $!";
                        
#@contenu = <F>;
                        
#close F or die "Saloperie de fermure de m. $!";
                        
                        
#open FO, ">$fileout" or die "Ouverture du fichier cible $fileout $!";
                        
#print FO @contenu;
                        
#close FO || die "Putain de merde de con de vache pourrie $!";
                        
                        
print "le fichier $file a ete modifie en $fileout\n";
                
}
                
elsif ($resp =~ /^n|NON|not|NO|neni|nada/) {
                        
print "Bon on passe pour celui là\n";
                        
next;
                
}
                
else {
                        
print "c'est pourtant pas compliqué de repondre par\noui ou non\tou\no ou n\tou\nYES ou NO\n";
                        
print "dans le doute je m'abstient\n";
                
}
                
        
}
}


sub correcte($ext) {
        
my ($ext)= @_;
        
if ($ext =~ /^\w{3,4}/) {
                
return 1;
        
}
        
else {
                
return 0;
        
}
}

END;

précédant | suivant | sommaire
Last modified: Tue Oct 8 19:03:46 CEST 2002