Python 脚本运行正常但无法调度

Python script runs normally but cannot be scheduled

我有一个 python 可以 运行 正常但无法在 Windows 7 任务计划程序上成功安排到 运行。我什至创建了一个批处理文件来调用 python 脚本。

在任务操作("Start a program")下,我有;

C:\Backup\backup.bat

太简单了,我找不到任何我做错的地方。还有什么需要注意的吗?

在驱动器 C: 上创建一个目录 Temp 并确保安全权限设置为对所有人完全控制。

在顶部放入您的批处理文件:

@echo off
echo Current directory: %CD%>C:\Temp\Environment.txt
echo.>>C:\Temp\Environment.txt
echo Environment variables:>>C:\Temp\Environment.txt
echo.>>C:\Temp\Environment.txt
set >>C:\Temp\Environment.txt

当您双击批处理文件时,它会将当前目录写入文件 C:\Temp\Environment.txt,这将是批处理文件的目录。并将为您的用户帐户定义的所有环境变量也写入文件 C:\Temp\Environment.txt.

现在将 Environment.txt 重命名为 DoubleClickedEnvironment.txt

然后对 运行 与计划任务相同的批处理文件执行必要的操作,稍后查看 C:\Temp\Environment.txt

通过比较 C:\Temp\Environment.txtC:\Temp\DoubleClickedEnvironment.txt,您很可能会发现当前目录现在是 C:\Windows\System32(分别是 %SystemRoot%\System32),而不是包含批处理文件的目录和环境变量列表及其值不同。

环境变量中最重要的是 PATHPATHEXT 当不引用批处理文件中的可执行文件时,如果名称或路径包含 1 或更多的空间。此外,为 Python 定义并由 Python 评估的所有环境变量在您的批处理文件中都很重要。

运行将某项设置为计划任务的另一个常见错误是认为用于计划任务的帐户与当前用户具有相同的访问文件和目录的权限。如果没有使用您的用户帐户执行计划任务,则不会出现这种情况。

并且最后映射的网络驱动器未映射到 运行ning 批处理文件作为计划任务。映射网络驱动器仅在用户登录时由 Windows 完成。所以在为运行宁设计的批处理文件中作为计划任务

  • 必须使用 UNC 路径,或者
  • 命令 pushdpopd 用于使用为计划任务,或
  • %SystemRoot%\System32\net.exe X: \ComputerName\ShareName password /user:domain\username /persistent:no

    用于批处理文件的开头,

    %SystemRoot%\System32\net.exe X: /delete

    在批处理文件末尾用作驱动器 X: 的示例。

最后一种方法非常不安全,因为这使得每个有权读取批处理文件的人都可以获取共享的用户名和密码。