我有一个可以正常运行但无法安排在Windows 7任务计划程序上成功运行的python。我甚至创建了一个批处理文件来调用python脚本。
在任务操作(“启动程序”)下,我有;
C:\Backup\backup.bat
这很简单,我找不到任何我做错的事。还需要注意的其他事情吗?
答案 0 :(得分:1)
在驱动器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.txt
与C:\Temp\DoubleClickedEnvironment.txt
进行比较来确定当前目录现在是C:\Windows\System32
(分别为%SystemRoot%\System32
),而不是包含批处理文件的目录和环境变量列表及其值不同。
对于环境变量,最重要的是PATH
和PATHEXT
,如果名称或路径包含1个或多个空格,则不引用批处理文件中的可执行文件,文件名为扩展名,文件名用双引号括起来。此外,为Python定义并由Python评估的所有环境变量对批处理文件都很重要。
运行计划任务的另一个常见错误是认为计划任务的已使用帐户在访问文件和目录时具有与当前用户相同的权限。如果未使用您的用户帐户执行计划任务,则情况并非如此。
最后映射的网络驱动器未作为计划任务运行批处理文件时映射。映射网络驱动器仅在用户登录时由Windows完成。因此,在设计用于按计划任务运行的批处理文件中
%SystemRoot%\System32\net.exe X: \\ComputerName\ShareName password /user:domain\username /persistent:no
用于批处理文件的开头和
%SystemRoot%\System32\net.exe X: /delete
在批处理文件的末尾用作驱动器X的示例:。
最后一种方法非常不安全,因为这使得每个拥有读取批处理文件权限的人都可以获得共享的用户名和密码。