in reply to using perl script to schedule windows task

Without seeing any code all I can do is guess.

My guess is that you are opening your logfile with a relative path name, like:

open my $log_fh, './log/mylogfile.log' or die $!;

But when your task runs, the current directory is not what you think it is.

Alternatively, you are running your task under the SYSTEM account and try to wite to a network drive. The local account is not allowed to write to network drives.

Replies are listed 'Best First'.
Re^2: using perl script to schedule windows task
by ytjPerl (Scribe) on Aug 04, 2017 at 16:58 UTC
    You are right. I just realized that, My inputfile and outputfile path both like /xx/xx.log, but Windows does not recognize this path. How I could resolve it? my code is
    #!perl use strict; use autodie; use Win32::Service qw'GetServices GetStatus StartService'; use POSIX; my @state_name = qw( UNKNOWN Stopped START_PENDING STOP_PENDING Started CONTINUE_PENDING PAUSE_PENDING PAUSED ERROR ); my $date = strftime("%Y-%m-%d", localtime); my ($shortname, %status, $state_no); my $filename = '/Users/Documents/Traning/Perl/XiServiceList.txt'; open FILE, '<', $filename;# autodie my $hostname = <FILE>; chomp $hostname; open MYFILE, ">>", "/Users/Documents/Traning/dailycheck\_$date\.log"; print MYFILE "Checking Services available for '$hostname'\n"; my %available=(); GetServices($hostname,\%available) or die "$!"; # add short names $available{$_} = $_ for values %available; print MYFILE "Checking services in list\n";
    I tried to modify the path like c\:/Users/Documents/Traning/dailycheck\_$date\.log, it does not work on command, I have not tested in windows scheduler. Thanks!
      my $path = 'C:/Users/Documents/Traning'; my $filename = $path.'/Perl/XiServiceList.txt'; my $logfile = $path."/dailycheck_$date.log"; . . open MYFILE, ">>", $logfile;

      Note : Is it not c:/users/username/documents/Traning?

      poj