gpt4 book ai didi

windows - 从通过 Windows 任务计划程序运行的 Perl 脚本生成的进程无权访问 %PATH%

转载 作者:可可西里 更新时间:2023-11-01 09:30:48 28 4
gpt4 key购买 nike

我有一个 Perl 脚本,它使用反引号调用 Windows 上的程序。当我在命令提示符下运行它时,它工作正常。当我使用 Windows 任务计划程序运行它时,它停止工作。这是在带有 ActiveState Perl 的 Windows Server 2008 x64 上。它给我一个错误,无法识别为内部或外部命令、可运行的程序或批处理文件。一旦我将对程序的调用更改为指向程序的完整路径,它就会再次运行。

因此,当它在带有反引号的任务计划中运行时,会阻止它看到 Windows 环境变量,特别是运行时的 %PATH% 变量。反引号生成的 shell 中可能缺少某些东西?我应该使用不同的命令来执行系统调用吗?或者是否有可以解决此问题的任务计划程序设置?如果有人可以提供帮助,我将不胜感激。

老实说,我的环境比这更复杂,但我已经将范围缩小到了。我实际上有一个任务计划,其中有一个运行 php 脚本的批处理文件,它本身运行 perl 脚本,然后运行该程序。我之前没有提到的其余堆栈似乎可以访问 %PATH%,因此批处理文件运行“php ...”,php 脚本运行“perl ...”,然后 perl 脚本失败使用反引号运行“程序名”时。我已经删除了批处理文件和 php 脚本,并且只有任务调度程序和 perl 的行为仍然存在。

最佳答案

Perl 中的运行路径基本上帮助我解决了问题。问题不在于 perl 本身,而是在任务调度程序服务重新启动之前,对 %PATH% 变量的更改不会显示给任务调度程序这一事实。据我所知,如果不重启机器就无法重启任务调度程序。所以程序路径在任务计划中运行时没有显示,但在命令行中显示。

我找到了两个解决方案。

一种是重启机器。

第二个是确保您的任务计划设置为“无论用户是否登录都运行”(最接近该选项的命令行参数是 schtasks 的/NP 参数)出于某种原因在该场景使其可以访问当前的 %PATH% 变量。我不确定,但我认为这会破坏需要与桌面交互的脚本。

关于windows - 从通过 Windows 任务计划程序运行的 Perl 脚本生成的进程无权访问 %PATH%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10559050/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com