Perl脚本通过任务计划程序运行不同

时间:2013-05-28 17:10:43

标签: perl scheduled-tasks scheduler

我正在运行一个perl脚本,它从ftp服务器获取文件,然后执行系统命令。

当我从调度程序运行任务时,它不会获取文件,但它会执行系统命令。两者都包含在if语句中,所以我知道if语句正常工作。

我已经检查了权限,并且任务正在使用最高权限。我也是以管理员身份运行任务。现在,问题是当我手动运行程序时,一切正常。为什么我手动运行它时会正常运行,而不是在我通过调度程序运行它时呢?

以下是一些代码:

if ($size_ftp == $size_local) {
            print "Files are the same...\n";
            $ftp->quit;
            print "FTP has quit!\n";
        } else {
            print "Files are not the same...begin download!\n";
            $ftp->get($file_ftp) or die "get failed ", $ftp->message;
            print "Download complete...\n";
            $ftp->quit;
            print "FTP has quit!\n";
            my $Archive_file = Archive::Extract -> new( archive => $file_dir );
            print "File extraction identified...\n";
            $Archive_file -> extract( to => $extract_here );
            print "File extracted...\n";
            system('call "C:\QMSEDX.exe"');
            print "System EDX call completed!\n";
    }

1 个答案:

答案 0 :(得分:2)

为什么您认为该文件未下载?您是否有“失败”错误?我确定它已下载但不是你想要的地方。

当您从调度程序执行脚本时,当前工作目录通常与从命令行运行它不同。您可以在任务的属性中设置脚本工作目录,也可以告诉您的脚本在哪里保存下载的文件

use FindBin qw($Bin);

....

$ftp->get( $file_ftp, "$Bin/$file_ftp" ) or die "get failed ", $ftp->message;