0

我想安排任务每周在 Win 任务调度程序中运行 perl 脚本。perl 脚本使用以下命令从命令行手动运行:

perl update_blastdb.pl --passive --decompress refseq_rna

如何传递上述 3 个参数:

--passive --decompress refseq_rna

Edit1: 我写了一个 bat 文件,其中包含:

@echo off
cd "C:\inetpub\wwwroot\webclient\db\nucleotide"
call "C:\Strawberry\perl\bin\perl.exe" "C:\inetpub\wwwroot\webclient\db\nucleotide\update_blastdb.pl" --passive --decompress gss_annot> C:\perl_out.log 2>&1

我在 Win 任务调度程序中安排任务以运行 bat 文件。首先,当我指定运行它的时间时,时间来了又去,任务没有运行(状态:就绪)。其次,当我通过右键单击任务并单击运行手动运行任务时,状态更改为(正在运行)但是,它似乎没有运行,因为我检查了我创建的错误日志,perl_out.log,发现它没有创建。

请澄清一下?

Edit3: 当我将任务创建为“基本任务”时它成功运行。谢谢

4

1 回答 1

2

您希望计划任务可执行文件只是“perl”,而所有其余部分(包括 Perl 脚本)都进入参数。根据 Windows 版本,参数的指定方式不同,因此您需要查看该部分,但在任务 GUI 中就可以了。

其他几个建议:

  1. 在您的命令周围制​​作一个 DOS 批处理脚本“包装器”。BAT 脚本更容易在任务 GUI 中指定,管理员也更容易手动启动。
  2. 还可以考虑将标准输出和标准错误重定向到日志文件,这样您就可以监控正在发生的事情。有时这只是为了调试启动任务的问题(如 Perl 或 Perl 脚本的问题)。
  3. 对于奖励积分,请在单独的程序中监控日志文件,以便在出现问题时立即通知您。

编辑:根据操作的编辑添加有关任务设置的详细信息。

在任务设置中执行所有重定向,而不是在 BAT 脚本中。我发现没有必要包含call在 mt BAT 包装器中,甚至也没有必要明确包含 perl.exe。

这是一个示例任务设置: 在此处输入图像描述

这是一个示例 BAT 包装器:

@echo off

date/t
time/t

echo.
disk_space.pl C:
disk_space.pl D:

echo.
echo Done.
exit/b
于 2016-03-28T18:26:49.277 回答