我正在运行一个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";
}
答案 0 :(得分:2)
为什么您认为该文件未下载?您是否有“失败”错误?我确定它已下载但不是你想要的地方。
当您从调度程序执行脚本时,当前工作目录通常与从命令行运行它不同。您可以在任务的属性中设置脚本工作目录,也可以告诉您的脚本在哪里保存下载的文件:
use FindBin qw($Bin);
....
$ftp->get( $file_ftp, "$Bin/$file_ftp" ) or die "get failed ", $ftp->message;