Windows任务计划程序不允许python subprocess.popen

Windows任务计划程序不允许python subprocess.popen,python,windows,batch-file,scheduled-tasks,Python,Windows,Batch File,Scheduled Tasks,前几天我注意到一个相当有趣的问题 我在windows server 2008 RT上有一个windows计划任务。此任务运行一个批处理文件,该批处理文件运行我构建的python脚本。在这个python脚本中,有一个subprocess.Popen调用来运行其他几个批处理文件。然而,在过去的几天里,我注意到任务已经成功运行,但是辅助批处理文件没有成功运行。我知道python脚本之所以成功运行,是因为它创建了日志,并且它生成的辅助批处理文件使用的所有文件都在那里。但是,完成的文件不是 如果我只运行批

前几天我注意到一个相当有趣的问题

我在windows server 2008 RT上有一个windows计划任务。此任务运行一个批处理文件,该批处理文件运行我构建的python脚本。在这个python脚本中,有一个subprocess.Popen调用来运行其他几个批处理文件。然而,在过去的几天里,我注意到任务已经成功运行,但是辅助批处理文件没有成功运行。我知道python脚本之所以成功运行,是因为它创建了日志,并且它生成的辅助批处理文件使用的所有文件都在那里。但是,完成的文件不是


如果我只运行批处理文件本身,那么一切都可以完美地工作。Microsoft的任务调度器是否不允许程序打开其他批处理文件?是否有解决方法

当任务调度器试图调用运行python脚本的.bat时,我遇到了完全相同的问题

我发现诀窍是将bat文件的路径放在Start in(可选)中

感谢Jordan8307的回答

相同的情况:taks->批处理脚本->Python进程->子进程,但在Windows Server 2012上

我通过在
subprocess.Popen
中提供脚本/exe的绝对路径来解决这个问题

我验证了Python进程中可用的环境变量,并且脚本/exe位于
路径
上的一个目录中。尽管如此,除非我提供绝对路径,否则Windows会给出一个
FileNotFoundError


奇怪的是,从批处理脚本调用同一个脚本/exe而不提供其绝对路径是可能的。

您是否将Popen()包装在异常中+管道化其stdout/err并将其全部记录?上面说什么?可能是权限问题,甚至是当前的目录问题。实际上我没有,现在我会打印结果。我遇到了同样的问题,找不到令人满意的技术解释,但我可以通过将计划任务更改为调用psexec.exe(从系统内部)来解决它-d-h-ic:\windows\system32\cmd.exe/c python.exe(等)