2010-07-02 96 views
2

我有一个perl.exe文件,我每十分钟运行一次。我设置了Windows调度程序来运行它,它表示它是成功的,但文件中没有输出。当我单击.exe时,它会将信息写入输出文件。当调度程序假定已经运行它时,文件中没有任何内容。有没有我可以写入perl脚本的代码,让它每10分钟运行一次?或者是否有人知道它可能无法正确执行的原因。这里是我的脚本代码:安排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

我们可以看到您在窗口调度程序中使用的命令吗? – spinon 2010-07-02 21:07:00

+0

我没有使用命令我刚刚选择文件下的文件选择选项 – shinjuo 2010-07-02 21:25:59

+0

'use strict;使用警告;' – Ether 2010-07-02 21:57:27

回答

1

假设你没有从你的代码中删除的路径和你没有指定开始,在目录中,提供了输出文件,例如完整路径

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

为什么它可以工作,虽然我自己点击.exe文件,而不是当调度程序使用它时 – shinjuo 2010-07-02 21:26:49

+0

@shinjuo调度程序以系统根作为当前目录启动任务。我假设你的代码住在别的地方。 – 2010-07-02 21:36:54

+0

输出文件与.exe及其所有文件一起位于相同的文件夹中 – shinjuo 2010-07-02 22:06:06

1

有两件事情你应该做的:

  1. 指定的程序路径
  2. 确保权限文件是由调度写

代码:

#!/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";