Windows 开机自启项诊断
自启项位置
- 用户级:
C:/Users/<用户>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/ - 公共级:
C:/ProgramData/Microsoft/Windows/Start Menu/Programs/Startup/
三大常见坑
%~dp0路径错:bat 放在启动文件夹后,set "PROJECT=%~dp0"解析成"启动文件夹"而非项目目录 → cd 到错路径,npm / python 根本没执行。
→ 修法:改用绝对路径,如set "PROJECT=<项目绝对路径>"。- Python 选错 venv:裸
python/pythonw可能没装 flask / streamlit / pyodbc →ModuleNotFoundError。
→ 修法:用专属 venv 解释器(如<VENV>/Scripts/python.exe)。 - 端口冲突:两个自启项拉起同一端口(如都起 5000)→ 后者失败。
→ 修法:保留一个,禁用 / 删除多余副本(改名.disabled留可恢复)。
诊断流程
- 列启动文件夹项,识别近期改动(看修改时间)。
- 检查依赖:用目标解释器
python -c "import flask"验证包齐全。 - 实拉起服务后台进程,curl 探端口(HTTP 200 = 正常),再关掉测试进程。
验证脚本片段
REM 修路径:启动文件夹里的副本用绝对路径
set "PROJECT=<项目绝对路径>"
set "VENV_PYTHON=<VENV>/Scripts/python.exe"
# 探端口
curl -s -o /dev/null -w "HTTP %{http_code}\n" --max-time 10 http://127.0.0.1:<PORT>/
# 查监听
netstat -ano | findstr :<PORT>
注意
- 动自启配置属"改之前先确认"范畴,误删会让服务不开机自起。
- 禁用而非删除(改名
.disabled)保留可恢复性。 - 端口占用排查:先
netstat -ano | findstr :<PORT>拿 PID,再决定杀掉还是换端口。