我有一个Perl脚本,使用反引号调用Windows上的程序,在命令提示符中运行时正常工作,但在使用Windows任务计划程序运行时停止工作。这是在安装了ActiveState Perl的Windows Server 2008 x64上,它会给我一个错误:"未将"programname"识别为内部或外部命令、可执行程序或批处理文件。"一旦我将对程序的调用更改为指向程序的完整路径,它就能再次运行。
因此,当使用反引号在任务计划程序中运行时,某些内容会阻止其访问Windows环境变量,特别是%PATH%变量。也许由反引号生成的shell缺少某些内容?我应该使用不同的命令来执行系统调用吗?或者有没有任务计划程序设置可以解决这个问题?如果有人能帮忙,我会很感激。
说实话,我的环境比这个更复杂,但这就是我找到的。实际上,我有一个包含批处理文件的任务计划程序,该批处理文件运行一个运行perl脚本的php脚本,然后perl脚本再运行该程序。我之前没有提到的堆栈的其他部分似乎可以访问%PATH%,因此批处理文件运行“php ...”,php脚本运行“perl ...”,然后在使用反引号运行“programname”时perl脚本失败。我已经删除了批处理文件和php脚本,但仍然遇到相同的问题,只有任务计划程序和perl文件。
因此,当使用反引号在任务计划程序中运行时,某些内容会阻止其访问Windows环境变量,特别是%PATH%变量。也许由反引号生成的shell缺少某些内容?我应该使用不同的命令来执行系统调用吗?或者有没有任务计划程序设置可以解决这个问题?如果有人能帮忙,我会很感激。
说实话,我的环境比这个更复杂,但这就是我找到的。实际上,我有一个包含批处理文件的任务计划程序,该批处理文件运行一个运行perl脚本的php脚本,然后perl脚本再运行该程序。我之前没有提到的堆栈的其他部分似乎可以访问%PATH%,因此批处理文件运行“php ...”,php脚本运行“perl ...”,然后在使用反引号运行“programname”时perl脚本失败。我已经删除了批处理文件和php脚本,但仍然遇到相同的问题,只有任务计划程序和perl文件。
path > c:\logfile.txt
,这样你就可以看到 PATH 的确切设置。 - Harry Johnston