经验:如何让Python脚本开机自启且不显示控制台窗口
更新历史
20200208:
- 首次发布
最近用Python搞了一把Windows桌面壁纸自动更换1,却遇到了两个困扰:
- 如何让Python脚本开机自启?
- Python脚本开机自启后,会出现一个控制台窗口,看上去不太优雅。。。怎么解决?
针对以上两个困扰,我做了一些尝试,并成功地解决了问题。以下为解决办法。
注:本文针对的操作系统为Windows 10,不能保证对其他版本的Windows系统也有效。
Python脚本开机自启且不显示控制台窗口——基于.bat文件
假设需要开机自启的Python脚本文件的完整路径为D:\桌面背景自动更换\壁纸.py
。创建一个.txt文件(设文件名为:开机自启.txt
),用记事本打开,添加以下内容2:
D:
cd D:\桌面背景自动更换
python 壁纸.py
由于壁纸.py
的路径中带有中文(“桌面背景自动更换”、"壁纸"是中文),可能会导致后续生成的开机自启.bat
运行出错,因此,开机自启.txt
需要以ANSI编码保存3,如下图所示:
然后,将开机自启.txt
的名称更改为开机自启.bat
。最后,将开机自启.bat
复制到Windows的启动目录(C:\Users\
你的Windows账户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
)下:
该方法是有效的,但是:
壁纸.py
开机自动运行后,桌面上会有一个控制台窗口(关闭窗口,该python脚本就会停止运行),看上去不太优雅
为了让控制台窗口不会显示出来,我们需要在开机自启.bat
的开头部分加入一些代码45,加完代码后,开机自启.bat
中的内容如下:
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
D:
cd D:\桌面背景自动更换
python 壁纸.py
双击开机自启.bat
,可以发现壁纸.py
运行正常。然而,电脑重启后,壁纸.py
却没有成功运行,Windows弹出了一个"脚本运行错误"的提示窗口。革命尚未成功,那就继续求助万能的网友。。。经过尝试,发现只需将开机自启.bat
中的%~nx0
改成%~0
,问题就解决了67。最终,开机自启.bat
中的内容如下:
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~0"" h",0)(window.close)&&exit
:begin
D:
cd D:\桌面背景自动更换
python 壁纸.py
这样,壁纸.py
就能够开机自启且不会出现控制台窗口了。
现在,目的是达到了,但是当我们想让壁纸.py
停止运行时,惊喜就出现了:该怎么关闭壁纸.py
呢?别急,可以这么做:如下图所示,打开任务管理器,找到"Python",将它"结束任务"即可。
附录: Python脚本开机自启的另一种方法——基于快捷方式
假设需要开机自启的Python脚本文件为壁纸.py
,那么,只需为其创建快捷方式,再将快捷方式复制到Windows的启动目录(C:\Users\
你的Windows账户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
)下即可8:
该方法亲测有效,但是:
壁纸.py
开机自动运行后,桌面上会有一个控制台窗口- 偶尔会出现问题:电脑开机后,
壁纸.py
这个文件没有被执行,而是被一个文本编辑器打开了。。。难道是要我看代码?o(╥﹏╥)o
鉴于该方法不是那么可靠,我虽然对其进行了描述,但并不推荐使用它。
参考:
简书:3分钟教你用python把你的桌面壁纸变得酷起来 ↩︎
CSDN:在Windows系统中 开机自动运行一个Python脚本 或者自动运行一个软件 ↩︎
百度经验:好吃的批处理脚本:[9]bat中文乱码怎么办 ↩︎
CSDN:window7 bat 开机自启动,不显示cmd窗口 ↩︎
CSDN:window 下 bat脚本不显示cmd窗口执行,并添加开机自启 ↩︎
百度知道:BAT在开机启动时,出现脚本错误! ↩︎
ZOL问答:BAT在开机开启时,出现脚本错误! ↩︎
CSDN:让你的python程序开机自启动 ↩︎
更多推荐
经验:如何让Python脚本开机自启且不显示控制台窗口
发布评论