IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

copie automatique de fichiers


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 106
    Par défaut copie automatique de fichiers
    bonjour tout le monde,

    j'ai un problème avec mon script, j'ai un fichier C:/ERASE.TXT contenant un nombre de fichiers:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c:/F20081203.txt
    %SystemRoot%/F20081023.txt
    D:/Temp/F20090110.txt
    ..etc

    je voudrai faire un script qui va parcourir C:/ERASE.TXT et effacer tous ces fichiers..sinon afficher un message "$fichier introuvable" si le fichier n'existe pas.

    au final ça sera une chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    c:/file1.txt effacer
    d:/file2.txt introuvable
    ..etc
    voici mon code qui ne fonctionne pas
    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
    #! perl
     
    use strict; 
    use warnings;
     
    open my $file,"<","C:/erase.txt" or die "fichier introuvable";
     
    while(my $line=<$file>)
    {
      if(unlink($line) == 0) 
      {
        print "$line intouvable";
      }
      else
      {
        print "$line effacer";
      }
    }
    je suis sous Windows Xp

    merci beaucoup

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Peux-tu préciser ce qui ne marche pas... ?

    Sinon, deux remarques :
    - je doutes que l'interpolation des variables du shell Windows (comme %SystemRoot% se fasse correctement)
    - il est sans doute préférable de chomper les noms de fichier avant unlink.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 106
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Peux-tu préciser ce qui ne marche pas... ?
    Bonjour et merci Philou67430, on dirai que le code ne supprime qu'un seul fichier, et le surprenant dans tout ça c'est que, quand j'appel le script une autre fois pour supprimer le fichier suivant, il ne supprime rien
    J'ai essayer comme t'as dit, t'éviter l'utilisation des variables du Shell
    %SystemRoot%..etc mais rien ne se passe..

    merci en tout cas

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Et le chomp($line) avant le if ?
    Si ton fichier est de type Windows, il peut aussi être utile de définir le séparateur de ligne avec "\r\n" en début de programme :

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 106
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Et le chomp($line) avant le if ?
    [/CODE]
    Merci Philou67430,

    problème résolu, c'était juste le chomp

    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
     
    #! perl
     
    use strict; 
    use warnings;
     
     
    open my $file,"<","erase.txt" or die "fichier introuvable";
     
    while(my $line=<$file>)
    {
      chomp($line);
     
      if(unlink($line) == 0) 
      {
        print "$line intouvable\n";
      }
      else
      {
        print "$line effacer\n";
      }
    }
    avec: contenu du fichier erase.txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    c:\file test.txt
    D:\dossier\file.tmp
    ..etc
    Citation Envoyé par Philou67430 Voir le message
    il peut aussi être utile de définir le séparateur de ligne avec "\r\n" en début de programme :
    [CODE]$/ = "\r\n";
    j'ai pas compris

    @+

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Je ne connais pas la valeur par défaut de ton $/, ni comment se termine tes lignes dans ton fichier, c'est pourquoi je t'ai proposé de modifier sa valeur.

    Pour comprendre, lire :
    perldoc perlvar (chercher la variable $/).

  7. #7
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Si ton fichier est de type Windows, il peut aussi être utile de définir le séparateur de ligne avec "\r\n" en début de programme :
    S'il est sous Windows, il ne faut surtout pas qu'il redéfinisse ainsi $/ : le mode de lecture texte, qui est le défaut sous Windows traduit automatiquement les \r\n en \n en entrée et les \n en \r\n à l'écriture.

    --
    Jedaï

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Sauf s'il est sous XP/Cygwin installé avec l'option fichier texte Unix

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Copie automatique de certaines feuilles vers un autre fichier
    Par fra7878 dans le forum Excel
    Réponses: 10
    Dernier message: 20/01/2015, 16h15
  2. [XL-2010] Copie automatique de données entre plusieurs fichiers variables
    Par panpipes dans le forum Excel
    Réponses: 0
    Dernier message: 01/04/2014, 16h21
  3. [XL-2010] Copie un automatiquement un fichier
    Par farota dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/01/2013, 11h53
  4. copie d'un fichier vers un autre serveur
    Par jexl dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 16h04
  5. Génerer automatiquement plusieurs fichier .doc
    Par brunovitch dans le forum QuickReport
    Réponses: 3
    Dernier message: 09/07/2002, 08h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo