【发布时间】:2023-02-22 18:29:42
【问题描述】:
我正在使用 Windows 10 专业版。我已使示例尽可能简单。该代码只是在日志文件中写入一些日志。
这是我的 python 脚本:C:\Users\myname.mysurname\Downloads\test.py
import os
import logging
def main():
logger.info('hi')
try:
logger.info('bye')
except Exception as e:
logger.debug(e)
return 1
return 0
if __name__ == '__main__':
# Gets or creates a logger
logger = logging.getLogger(__name__)
# set log level
logger.setLevel(logging.DEBUG)
# define file handler and set formatter
file_handler = logging.FileHandler('logfile.log')
formatter = logging.Formatter('%(asctime)s : %(levelname)s : %(name)s : %(message)s')
file_handler.setFormatter(formatter)
# add file handler to logger
logger.addHandler(file_handler)
exit(main())
这是我的批处理文件:C:\Users\myname.mysurname\Downloads\batch_file.bat
C:\Users\myname.mysurname\Python\Envs\default\Scripts\Activate.bat && python C:\Users\myname.mysurname\Downloads\test.py pause
我确定:
- python 脚本在 PyCharm 中执行时运行良好。
- 当我双击批处理文件时,它运行良好。
- 所有文件都保存在本地。
- 我已登录。
- 我在我的电脑上有管理员权限。
这是我的 Windows 调度程序设置:
我什至还没有创建触发器,因为我正在测试设置。当我在 Windows Scheduler 中手动单击“运行”时,状态从“就绪”变为“正在运行”,并弹出一个黑色的命令窗口并立即消失(所以我看不懂它说的是什么)。接下来什么也没有发生。状态永远保持“正在运行”,直到我最终手动停止它。当我查看历史记录时,我看到它同时开始和结束。然后我检查 logfile.log 并看到它没有被修改,但我希望看到这样的东西:
问题是什么?否则,我该如何调试?
【问题讨论】:
-
将“PAUSE”添加到 bat 文件的末尾,这样命令提示符窗口将保持打开状态,然后检查发生了什么。
-
尝试使用日志文件的绝对路径,因为相对路径可能不会指向预期的位置。
-
@OmidShojaee 我在批处理文件的末尾添加了暂停,但是当我使用 Windows 调度程序运行或手动双击 .bat 文件时它没有暂停。我编辑了问题,以便您可以看到我是如何在最后添加暂停的。我做对了吗?
-
你的批处理文件应该是
@Call "%UserProfile%\Python\Envs\default\Scripts\Activate.bat" && "P:\athTo\python.exe" "%UserProfile%\Downloads\test.py"。当您从另一个运行批处理文件并希望返回到它并在同一环境中执行其他操作时,您需要CALL命令。
标签: python batch-file windows-task-scheduler