2010-07-02 5 views
2

J'ai un fichier perl .exe que je devais exécuter toutes les dix minutes. J'ai mis en place le planificateur de fenêtres pour l'exécuter et il dit qu'il est réussi, mais il n'y a pas de sortie dans le fichier. Lorsque je clique sur le fichier .exe, il écrit des informations dans un fichier de sortie. Lorsque le planificateur l'a soi-disant exécuté, il n'y a rien dans le fichier. Y a-t-il un code que je puisse écrire dans le script perl pour le faire fonctionner toutes les dix minutes seul? Ou est-ce que quelqu'un sait une raison pour laquelle il pourrait ne pas être exécuté correctement. Voici mon code de script:Planification d'un script perl

#!/usr/bin/perl -w 
use LWP::Simple; 
$now_string = localtime; 

my $html = get("http://www.spc.noaa.gov/climo/reports/last3hours.html") 
    or die "Could not fetch NWS page."; 
$html =~ m{(Hail Reports.*)Wind Reports}s || die; 
my $hail = $1; 
open OUTPUT, ">>output.txt"; 
print OUTPUT ("\n\t$now_string\n$hail\n"); 
close OUTPUT; 
print "$hail\n"; 
+0

pouvons-nous voir la commande que vous utilisez dans le planificateur de fenêtre? – spinon

+0

Je n'ai pas utilisé une commande Je viens de sélectionner le fichier sous l'option de sélection de fichier – shinjuo

+0

'use strict; utilisez les avertissements; – Ether

Répondre

1

En supposant que vous n'avez pas supprimé le chemin de votre code et que vous n'êtes pas spécifier un répertoire de démarrage dans, fournir un chemin complet du fichier de sortie, par exemple ,

open OUTPUT, ">>J:/Project/Reports/output.txt" 
    or die "$0: open: $!"; 
+0

pourquoi cela fonctionnerait-il si je clique sur le fichier .exe moi-même et non quand le planificateur l'utilise – shinjuo

+0

@shinjuo Le planificateur démarre des tâches avec la racine du système comme le répertoire courant. Je suppose que votre code vit ailleurs. –

+0

le fichier de sortie est situé dans le même dossier avec le fichier .exe et tous ses fichiers – shinjuo

1

Il y a 2 choses que vous devez faire:

  1. Indiquez le chemin dans le programme
  2. Assurez-vous que les autorisations du fichier sont accessibles en écriture par le planificateur

Code:

#!/usr/bin/perl -w 

use LWP::Simple; 
use strict;           # make sure you write good code 

    my $now_string = localtime; 

    my $html = get("http://www.spc.noaa.gov/climo/reports/last3hours.html") 
       or die "Could not fetch NWS page."; 
    my ($hail) = $html =~ m{(Hail Reports.*)Wind Reports}s or die; # combine your lines in one 

    my $file = "C:\Path\output.txt";     # use full qualified path 
    open OUTPUT, ">>$file"; 
     print OUTPUT ("\n\t$now_string\n$hail\n"); 
    close OUTPUT; 

    print "$hail\n";