ou mauvaise utilisation de rename et unlink
Bonjour,
je voudrais transformer le nom d'un fichier toto.txt en toto_bis.txt
donc soit renommer, soit copier avec son nom modifié et effacer l'original.
J'arrive à faire la copie, mais pas la modification du nom avec la commande rename, ni la suppression, d'où mon interrogation sur les droits sous WINDOWS XP
Voici le script :
------------------------------------------------------------
--------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 use Cwd; use File::Copy; $RepCourant = cwd(); my @nom_fichiers; print "lit le repertoire courant: $RepCourant \n"; # Ouverture d'un repertoire opendir (my $FhRep, $RepCourant) or die "impossible d'ouvrir le repertoire $repertoire\n"; # Liste nom_fichiers et repertoire sauf (. et ..) my @Contenu = grep { /.txt/ } readdir($FhRep); # Fermeture du répertoire closedir ($FhRep); # On recupere tous les nom_fichiers foreach my $nom_fichier ( @Contenu ) { open my($fichier), '<', $nom_fichier or die "Ce fichier $nom_fichier n'a pu etre ouvert : $!\n"; # "_bis" est le nom du repertoire que je voudrais accoller # au nom du fichier $term="_bis"; $longavg=length($RepCourant); $longfic=length($nom_fichier); # extraction du l'extension du fichier sur 3 caractères et du # "." qui la précède $nom_fichier_dim = substr($nom_fichier,0,$longfic -4); # ajout de "_bis.txt" au nom du fichier $nom_fichier_resu = $nom_fichier_dim .$term .".txt"; $nom_fichier_complet = $RepCourant ."\/" . $nom_fichier; $nom_fichier_resu_complet = $RepCourant ."\/" . $nom_fichier_resu; print "toto \n $nom_fichier_complet \n $nom_fichier_resu_complet \n"; copy ($nom_fichier_complet, $nom_fichier_resu_complet) or die "Pas moyen de renommer $nom_fichier en $nom_fichier_resu ."; unlink ($nom_fichier_complet); }
Merci d'avance si quelqu'un peut m'envoyer vers la bonne doc ou voit tout de suite ce qui ne va.
cordialement
... un peu plus tard :
pour mon problème spécifique, j'aurai la possibilité d'ajouter une ligne avec la commande ATTRIB dans un script windows qui appellera le script PERL et résoudra mon problème. J'espère avoir aider quelqu'un.
cordialement
Partager