我有一个使用反引号在 Windows 上调用程序的 Perl 脚本。当我在命令提示符下运行它时,它工作正常。当我使用 Windows 任务调度程序运行它时它停止工作。这是在带有 ActiveState Perl 的 Windows Server 2008 x64 上。它给我一个错误,无法识别为内部或外部命令、可运行程序或批处理文件。一旦我改变对程序的调用以指向程序的完整路径,它就会再次工作。
因此,当它在带有反引号的任务计划中运行时,它会阻止它看到 Windows 环境变量,特别是运行时的 %PATH% 变量。反引号产生的外壳中可能缺少某些东西?我应该使用不同的命令来执行系统调用吗?还是有一个任务计划程序设置可以解决这个问题?如果有人可以提供帮助,我将不胜感激。
老实说,我的环境比这更复杂,但这就是我将其缩小到的范围。我实际上有一个带有批处理文件的任务计划,该批处理文件运行一个 php 脚本,该脚本本身运行 perl 脚本,然后运行该程序。我之前没有提到的堆栈的其余部分似乎可以访问 %PATH%,因此批处理文件运行“php ...”并且 php 脚本运行“perl ...”然后 perl 脚本失败使用反引号运行“程序名”时。我已经剥离了批处理文件和 php 脚本,并且仅使用任务调度程序和 perl 的行为仍然存在。