Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从windows计划任务运行perl脚本_Windows_Perl - Fatal编程技术网

从windows计划任务运行perl脚本

从windows计划任务运行perl脚本,windows,perl,Windows,Perl,我在windows 2008服务器上安装了awstats。 我计划每天运行Updatestats.bat文件,任务运行正常,没有错误,但是脚本没有执行,或者抛出了一个我看不到的错误 --如果我直接从命令行运行bat文件,那么它可以正常工作-- 我尝试过windows调度程序的各种替代方案,如“nncron”和“Freebyte任务调度程序””,nncron也有同样的问题,但Freebyte应用程序工作正常,但遗憾的是它没有作为服务运行,因此没有任何用处。 这是bat文件的内容,所有行都是这样的

我在windows 2008服务器上安装了awstats。 我计划每天运行Updatestats.bat文件,任务运行正常,没有错误,但是脚本没有执行,或者抛出了一个我看不到的错误

--如果我直接从命令行运行bat文件,那么它可以正常工作--

我尝试过windows调度程序的各种替代方案,如“
nncron
”和“
Freebyte任务调度程序”
”,nncron也有同样的问题,但Freebyte应用程序工作正常,但遗憾的是它没有作为服务运行,因此没有任何用处。 这是bat文件的内容,所有行都是这样的

c:\strawberry\perl\bin\perl.exe D:\AWStats\wwwroot\cgi-bin\awstats.pl config=earlsmere.co.uk -update

有人有什么想法吗?

看起来输出在太空中丢失了

我建议将命令的输出重定向到一个文件,如下所示:

c:\strawberry\perl\bin\perl.exe D:\AWStats\wwwroot\cgi-bin\awstats.pl config=earlsmere.co.uk -update > c:\my_log.txt 2>&1

(由Anders Lindahl提供:)

您的无人值守环境明显不同于您的命令行。检查是否设置了以下各项:

  • 脚本的工作目录,如果它从中读取任何内容或使用相对路径
  • 如果脚本使用任何模块,则使用PERL*_LIB环境变量
  • PATH环境变量,如果脚本调用任何外部脚本/二进制文件
  • 运行计划任务的用户对您要执行的所有操作都有足够的权限
  • 作为一种快速解决方法,您可以使用和直接在脚本中设置它们

    在开始执行任何其他操作之前,您还可以尝试通过以下重定向捕获标准输出和错误:

    open(STDOUT, '>>', '/full/path/to/out.log') || die "Error stdout: $!";
    open(STDERR, '>>', '/full/path/to/err.log') || die "Error stderr: $!";
    

    请注意,您确实应该使用完整路径,以防工作目录设置错误。并确保目标目录/文件对任何人都是可写的。

    我不懂Perl,所以这可能是答案,也可能不是答案,但您需要当前目录中的一些数据吗?如果是,您的Perl脚本是否从数据所在的目录运行?