Bonjour à tous,
La question que je pose est peut-être sans sens mais je la tente quand même.

J'ai un script perl que je voudrais faire tourner comme un service sous windows 2003 server, afin qu'il tourne toutes les 10 minutes par exemples.

Comment m'y prendre ???

Voici mon 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
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
105
106
107
108
 
#!c:\perl\bin\perl.exe
 
use TX2::Tools;
 
# Le fichier HBSTAUTO.RUN est cr dans le rpertoire c:\wsta ds lors que TX2 est en mode automatique.
# Le script check_TX2_auto_mode.pl scrute l'existence de ce fichier et envoie un mail d'alert si tel n'est pas le cas.
%Job;
#Dfinition des variables
$auto_file="c\:\\wsta\\HBSTAUTO.RUN";
$schedule_job="c\:\\wsta\\SCHEDULE.CMD";
$last_event="c\:\\wsta\\EVENT.TRK";
##Vrification du mode automate
$date=&TX2::Tools::GetDate('franais');
$hour=&TX2::Tools::GetDate('hour');
 
$NowTime=substr($hour,0,4);
$NowTime_seconde=substr($NowTime,0,2)*3600+substr($NowTime,2,2)*60;
if(!(-e $auto_file))
{
 
 
       &GetLastEventHour;
       &GetNextJobs;
       #print "$ListJob\n$last_check\n";
      &TX2::Tools::SendMail('Mode automatique arrt',"La station ne fonctionne plus en mode automatique.\nDate de la dernire vrification de l\'automate.\n* Liste des jobs suivants:\n$ListJob\n");
      print "\nAutomate arrete\n";
}
else
{
       &GetLastEventHour;
 
#NowTime est utils avec last_hour dans une diffrence qui donnera le temps de raffraichissement de la recherche d'vnement
 
       if($NowTime_seconde>=$last_hour_seconde)
       {
            $Elapsed_time=$NowTime_seconde-$last_hour_seconde;     
            print "$Elapsed_time";
       }
       else
       {
            $Elapsed_time=(24*3600)-abs($NowTime_seconde-$last_hour_seconde); 
             print "$Elapsed_time";    
       }
 
#Si la diffrence (dernier raffraichissement est suprieur  2 minutes (120 secondes)), on envoie un mail (c'est que la station est bloque)
       if($Elapsed_time > 120)
       {
            $Format_Elapsed_Time=sprintf("%02d",($Elapsed_time/3600));
            $Format_Elapsed_Time.=":".sprintf("%02d",(($Elapsed_time-($Format_Elapsed_Time*3600))/60));
            &GetNextJobs;
            &TX2::Tools::SendMail("Mode automatique arrt ou TX2 crash","La dernire vrification d'vnement remonte  $Format_Elapsed_Time.\n* Date de la dernire vrification de l\'automate: $last_check.\n* Liste des jobs suivants:\n$ListJob\n");
            print "retard\n";
       }
}
 
 
 
 
 
###################################################
##Function GetNextJobs()
##Rcupration de la liste des jobs de l'automate
###################################################
sub GetNextJobs()
{
        open(fic,"$schedule_job") or die "Impossible d\'ouvrir $schedule_job $!\n";
        @tab=<fic>;
        close(fic);
        foreach(my $i=0;$i<=$#tab;$i++)
        {
              if($tab[$i]=~/1W0/ || $tab[$i]=~/1W1/ || $tab[$i]=~/2W0/ || $tab[$i]=~/2W1/)
              {
                    @tmp0=split(" ",$tab[$i]);
                    @tmp1=split(/:/,$tmp0[1]);
                    @tmp2=split(/=/,$tab[$i+2]);
                    $cle=$tmp1[0].$tmp1[1];
                    $Job{$cle}=$tmp2[1];
                    push(@Time,$tmp1[0].$tmp1[1]);
              }
        }
        @Time=sort(@Time);
 
       foreach(@Time)
       {
            if($_>=$NowTime)
            {
                $ListJob.="-".substr($_,0,2).":".substr($_,2,2). "\-\> $Job{$_}\n";
            }
       }
}
 
 
sub GetLastEventHour()
{
       #Rcupration de la dernire vrification d'vnement
       open(fic,$last_event) or die "Impossible d\'ouvrir $last_event $!\n";
       @event=<fic>;
       #On isole la date et heure de dernire vrification de l'vnement fait par l'automate (utilis pour le mail)
       $last_check=substr($event[0],35,9);
       $last_check=~s/at//g;
       #On isole l'heure de la dernire vrification de l'vnement fait par l'automate (on l'utilisera pour faire la diffrence avec l'heure de lancement du batch)
       $last_hour=substr($event[0],34,5);
       $last_hour=~s/://;
       $last_hour_seconde=substr($last_hour,0,2)*3600+substr($last_hour,2,2)*60;
       close(fic);
 
}
Merci pour vos réponses et désolé pour la question peu claire peut-etre, mais je sais vraiment pas comment m'y prendre.