在Windows的任务计划程序中添加的任务运行时都是不显示命令行窗口的(错误,已于2021年10月27日纠正),但是目前有一个Python程序,运行时需要通过命令行窗口来查看其运行状态,然而在网上搜到的都是如何隐藏命令行窗口。
通过cmd的start在新的窗口运行Python程序
失败
通过VBS的ws.run在新的窗口运行Python程序
失败
通过Python的win32gui.ShowWindow来显示自身的窗口
失败
最终方法
在本机运行的本地服务器上新加一个路由,接收到一个路径时运行Python程序,新建一个Python程序用来发送这个请求,在任务计划程序里把要运行的程序改为新建的这个Python程序。
成功!
@app.route('/...')
def ...():
import win32api
return str(win32api.ShellExecute(0, 'open', r"....py", '', '', 1))
import requests
requests.get("...")
2021年10月27日更新
更新1
之前发现在Windows任务计划程序运行的条件似乎有bug,此时复选框 只有在计算机使用交流电源时才启动此任务 是未勾选的,所以其子复选框 如果计算机改用电池电源,则停止 是灰色的,无法修改。那么按道理,父复选框未勾选,子复选框无论是否勾选都是无效的,况且这里还是灰色的不可修改的状态。但实际情况是计算机确实会在使用电池电源的时候启动此任务,但在任务运行过程中,如果计算机突然改用电池电源,任务仍然会停止。于是为了对比,我将父复选框勾选,将子复选框取消勾选后再将父复选框取消勾选,此时如果计算机改用电池电源,任务就不会停止了。
更新2
纠正一下,如果这里选择了 只在用户登录时运行 ,那么运行时就是显示命令行窗口的,如果选择了 不管用户是否登录都要运行 ,那么运行时不显示命令行窗口。