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

  1. #1
    Futur Membre du Club
    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é
    Bonjour,

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

  3. ###raw>post.musername###
    Futur Membre du Club
    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:<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />osGlob 'glob';   ## Appel Module File commande Glob...
    use File::Basename;			## Appel Module File commande Basename
    use File::Copy;				## Appel Module File commande Copy
    use File:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />ath;				## 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
     
     
     
    }
      0  0

  4. #4
    Membre régulier
    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:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />erl;
    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
    Futur Membre du Club
    merci je vais essayer et je reviens vers vous.

    a de suite

###raw>template_hook.ano_emploi###