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 :

recuperation du derneir fichier creer dans un repertoire


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 62
    Points : 13
    Points
    13
    Par défaut recuperation du derneir fichier creer dans un repertoire
    Bonjour les amis,

    voila j'ai un soucis. je suis novice en perl et en plus c'est script que j’essaie de faire sous Windows.
    je voudrais recuperer le dernier fichier créer en date dans un répertoire et pouvoir envoyer ce dernier via sftp.

    en vous remerciant

  2. #2
    Membre habitué

    Homme Profil pro
    Statisticien
    Inscrit en
    Novembre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Statisticien

    Informations forums :
    Inscription : Novembre 2010
    Messages : 122
    Points : 134
    Points
    134
    Par défaut
    Bonjour,

    Tu peux commencer par nous montrer ce que tu as déjà fait, cela nous permettra de mieux t'aider.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 62
    Points : 13
    Points
    13
    Par défaut
    voila alainBB. j'utilise un autre script en DOS pour recuperer le dernier fichier .FPM creer dans les dit repertoires. mais je voudrais tous faire en PERL.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    use File::DosGlob 'glob';   ## Appel Module File commande Glob...
    use File::Basename;			## Appel Module File commande Basename
    use File::Copy;				## Appel Module File commande Copy
    use File::Path;				## Appel Module File commande Path
    # use List::Util qw(reduce);
    # use strict;
    # use warnings;
    # use autodie;
    use Cwd;
    fileparse_set_fstype("MSWin32");	## Specification type Files System pour Module File
     
     
    ##################
    # VARIABLES PROG #
    ##################
    $zero = 0;													## Variable zero de bourrage
    my $pkzip = "C:\\rvs\\jobs\\pkzip25.exe";					## utilitaire de decompression
    my $dir_rvs_arrivee = "C:\\RVS\\ARRIVEE";					## Rep rvs d'arriver des fichiers
    my $dir_rvs_depart = "C:\\RVS\\DEPART";		## Rep rvs d'archive des KVPS
    my $dir_jobs = "C:\\RVS\\JOBS";								## Rep des fichiers scripts
    my $dir_histo = "C:\\RVS\\HISTO";							## Rep Historique
    my $dir_ET2000  = "C:\\RVS\\ARRIVEE\\ET2000"; 				#repertoire dans lequel on va
    my $batch = "C:\\rvs\\jobs\\testlynx1.bat";
    my $filetemp= "C:\\RVS\\TEMP";
    my $logfile = "$dir_histo\\$id_kvps\\$date\\day.log";	    # Log des routines
    my $iWidth = 60;											## Largeur affichage pour sub Center
     
    ########################
    # Sous Prog & Fonction #
    ########################
    sub Center($$) {
        local($Temp, $Width) = @_;
        local($Len) = ($Width - length($Temp)) / 2;
        return " " x int($Len), $Temp, " " x (int($Len) + (($Len != int($Len))? 1:0));
    }
     
    sub CALDATE() {
      # Commande recuperant l'heure et la date systeme
      # ATTENTION VARIABLE DATE & TIME DIFF EN Fr et Us
      my ($month,$day) = @_;
      my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);	## Commande recuperant l'heure et la date systeme
      $month = $mon + 1;
      $month = sprintf ("%02d",$month);
      $day = sprintf ("%02d",$mday);
      $hour = sprintf ("%02d",$hour);
      $min = sprintf ("%02d",$min);
      $sec = sprintf ("%02d",$sec);
      $time = "$hour$min$sec";
      $year += 1900;
      $date = "$year.$month.$day";
    }
     
    sub CEORDER() {
    	# Appel du fichier INI donnant la correspondance Id_kvps = N° ordre carbase
    	open (CEORDER,"$dir_jobs\\CEORDER.INI") ||  die "\U\n  HOULA ouverture ceorder.ini impossible \n $!";
    	@list_kvps = <CEORDER> ;
    	close (CEORDER);
    }
     
    sub FILESEND() {
    	# Appel du fichier INI donnant la correspondance Id_kvps = N° ordre carbase
    	open (FILESEND,"$filetemp\\filesend.txt") ||  die "\U\n  HOULA ouverture FILESEND.TXT impossible \n $!";
    	@list_send = <FILESEND> ;
    	print "\n\t - la liste des fichiers a envoyer est : @list_send";
    	close (FILESEND);
    }
     
    # Recuperation des N° de KVPS
    CEORDER;
    print "\n\n\t", Center("---------- IDENTIFICATION DES KVPS ----------", $iWidth), "\n";
    		foreach my $line (@list_kvps){
    			chomp $line;
    			my @mots = split(/\s+/,$line);
    			next if $mots[0] eq "#";
    			next if $mots[0] eq "";
    			next if substr ($mots[0],0,11) eq "num_atelier";
    			next if substr ($mots[0],0,11) eq "num_ATELIER";
    			$id_kvps = substr ($mots[0],9,5);	## recup id_kvps
    			$nb_order = substr ($mots[1],9);	## recup N° ordre carbase correspondant a L'id_kvps
    			$traitement_kvps = "NO";
    			print "\n\t - le numero de kvps est : $id_kvps";
     
    # nous avons le KVPS pour ce positionner dans le repertoire lui appartenant
    my $dir_kvps = "$dir_rvs_depart\\$id_kvps\\sauve";
    print "\n\t - $dir_kvps";
     
    # identifier les fichier Lynx generer ce jour et inscription de ce dernier dans un fichier
    system ("$batch $dir_kvps");
     
     
    # extraction du nom de fichier a envoyer
    FILESEND;
    	foreach my $namefile (@list_send){
    			chomp $namefile;
    			my @name = split(/\s+/,$namefile);
    			next if $word[0] eq "";
    			$id_name = substr ($word, 0,17);
    			print "\n\t - le fichier a envoyer est : $id_name";
    	}
    # envoie du fichier via SFTP
     
     
     
    }

  4. #4
    Membre habitué
    Homme Profil pro
    Master Data Manager
    Inscrit en
    Février 2017
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Master Data Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 113
    Points : 148
    Points
    148
    Par défaut
    Bonjour.

    1. je voudrais récupérer le dernier fichier créé en date dans un répertoire

    pour un problème similaire, j'avais utilisé un truc du genre:

    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use Modern::Perl;
    use IO::All;
     
    # recup les fichiers du repertoire '.'
    my @lst_files = io->dir( '.' )->all_files;
     
    # dernier inode créé
    my $f = (sort { $b->ctime <=> $a->ctime } @lst_files)[0];
     
    # affiche le ficher
    say $f->absolute;

    2. et pouvoir envoyer ce dernier via sftp

    Je vous recommande le module Net::SFTP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 62
    Points : 13
    Points
    13
    Par défaut
    merci je vais essayer et je reviens vers vous.

    a de suite

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 62
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Puppet_Master Voir le message
    Bonjour.

    1. je voudrais récupérer le dernier fichier créé en date dans un répertoire

    pour un problème similaire, j'avais utilisé un truc du genre:

    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use Modern::Perl;
    use IO::All;
     
    # recup les fichiers du repertoire '.'
    my @lst_files = io->dir( '.' )->all_files;
     
    # dernier inode créé
    my $f = (sort { $b->ctime <=> $a->ctime } @lst_files)[0];
     
    # affiche le ficher
    say $f->absolute;

    2. et pouvoir envoyer ce dernier via sftp

    Je vous recommande le module Net::SFTP


    bonsoir,

    voila je reviens vers vous. c'est bon ca fonctionne mais j'ai utilise Winscp
    merci a tous de m'avoir aider

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/04/2008, 10h13
  2. recuperer les fichier present dans un repertoire et les renommer en cascade
    Par oldscrout dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 20/12/2007, 15h44
  3. Recuperation des noms de fichiers contenu dans un repertoire
    Par fafabzh6 dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/10/2007, 18h45
  4. Fichiers Access Dans Les Repertoires
    Par T'chab dans le forum Access
    Réponses: 3
    Dernier message: 01/06/2006, 11h24
  5. Réponses: 9
    Dernier message: 27/10/2005, 22h38

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