1 开机自启动
Windows 10/Windows Server 201X具有一个名为“启动”的已知文件夹,系统每次启动开始自动运行应用程序、快捷方式和脚本时都会检查该文件夹,而无需额外配置。
要在Windows启动时运行脚本,先使用Windows+R快捷键打开“运行”对话框。
键入命令:shell:startup
C:\Users\lhy\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
测试脚本(.bat):
@echo off
chcp 65001
d:
cd \xxx
python xxx.py
将该文件放入 Startup 文件夹下,重启电脑即可。注意当文件的属性被设置为“隐藏”时,重启时可能会不执行。
在运行上述Batch(BAT)脚本时,通常会弹出一个命令行窗口来显示脚本的执行。如果想在运行BAT脚本时关闭命令行窗口,可以使用VBScript创建一个新的VBScript(.vbs)文件,然后在该文件中使用以下代码来运行BAT脚本::
CreateObject("Wscript.Shell").Run "c:xxx\xxx.bat",0,True
具体可以参考:
在Windows下运行命令行程序,如何才能不显示命令行窗口,让程序保持后台运行?
https://blog.csdn.net/quicmous/article/details/136420097
运行bat时隐藏cmd窗口:
https://www.cnblogs.com/mq0036/p/14633154.html
2 运行监控自启动
上述脚本只能达到一个开机自启动,无法检查程序是否在运行以及重启程序,因此可采用下述脚本,注意需要将上述的.bat转换为.exe文件(网上有工具可自行查找):
@echo off
:start
choice /t 5 /d y /n >nul
tasklist|find /i "xx.exe"
if %errorlevel%==0 (
echo "yes"
) else (
echo "No"
start "" cmd /k "xxx\xx.exe"
)
goto start
其中:
### 定时5s
choice /t 5 /d y /n >nul
### 如果存在该进程
if %errorlevel%==0 (
### 如果不存在,则自行启动
start "" cmd /k "xxx\xx.exe"
也可以采用powershell脚本(.ps1):
$pythonPath = "C:\XXX\anaconda3\python.exe"
$scriptPath = "D:\XXX.py"
while ($true) {
Start-Process -FilePath $pythonPath -ArgumentList $scriptPath -NoNewWindow
while (Get-Process -Name "python" -ErrorAction SilentlyContinue) {
Start-Sleep -Seconds 5
}
Start-Sleep -Seconds 5
}
把应用程序与批处理文件加入到安全白名单中。加入到白名单中的文件目录,文件,安全防护工具将信任该软件,可以直接使用。
以360安全卫士为例,在信任区添加python文件目录,以及启动文件夹中的批处理文件。
或者将上述.bat或.ps1和.exe一起粘贴到Startup 文件夹,否则.exe可能会被删除,从而报内存不足的错误。
3 设置了开机启动,但没有自启
1 win+R打开运行窗口,运行打开组策略(家庭版没有组策略功能),输入:gpedit.msc
2 依次展开:计算机配置-》Windows设置-》安全设置-》本地策略-》安全选项-》用户账户控制:以管理员批准模式运行所有管理员,设置为已禁用。
3 重启计算机
如果还不行,就在cmd里执行:
# 使用环境变量%ProgramData%或者%SYSTEMDRIVE%
echo %SYSTEMDRIVE%\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
echo %ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp
参考:
https://m.jb51.net/python/323335imo.htm
https://blog.csdn.net/weixin_44462773/article/details/135739385https://blog.csdn.net/weixin_40277264/article/details/128862187