Windows 下让任何 .bat 脚本后台运行的方法:使用 NSSM 注册为服务,告别误关窗口
Windows 下让任何 .bat 脚本后台运行的方法:使用 NSSM 注册为服务,告别误关窗口
前言
在 Windows 系统中,我们经常通过 .bat
脚本启动一些服务或任务,比如启动本地服务、运行爬虫、定时处理脚本等等。
但这些脚本默认在命令行窗口中运行,一旦窗口被关闭,程序就结束了。
有没有办法让 .bat
后台运行,自动守护,不被误关?
答案是:✅ 使用 NSSM 工具,将任何 .bat 或可执行程序注册为 Windows 服务!
目录
- 什么是 NSSM?
- 安装 NSSM
- 将任意 .bat 脚本注册为服务
- 更新脚本后的处理方式
- 一键重启/卸载服务脚本
- 常见用途案例
- 总结
1. 什么是 NSSM?
NSSM (Non-Sucking Service Manager) 是一个轻量、开源的工具,可以将任何程序或 .bat
脚本转化为 Windows 服务。
它的最大优势:
- 能让程序脱离命令行窗口运行
- 不受用户登录限制,可实现开机自启
- 避免被误关
- 支持日志输出
- 操作简单,经过时间考验
2. 安装 NSSM
-
请前往官网下载 NSSM:
https://nssm.cc/download -
选择适合你系统的版本(如 64 位)
-
解压后放到任意目录(如:
D:\tools\nssm
) -
(可选)把该目录加入 PATH 环境变量
3. 将任意 .bat 脚本注册为服务
示例:你有一个脚本 run_my_task.bat
,路径为 D:\myapp\run_my_task.bat
-
打开命令行(需要管理员权限):
D:\tools\nssm\nssm install my-task
-
在弹出窗口填写:
- Path:
D:\myapp\run_my_task.bat
- Startup directory:
D:\myapp\
- 可选设置日志输出
- Path:
-
点击 Install service
-
启动服务:
net start my-task
此时你的脚本已后台运行,不再依赖窗口。
4. 更新脚本后需要重启服务吗?
是的,如果你更改了 .bat
脚本内容,或他调用的配置/代码发生变化,都需要 重启服务 才生效。
可以用命令:
nssm restart my-task
或者:
net stop my-task
net start my-task
5. 一键管理服务脚本
重启脚本: restart.bat
@echo off
net stop my-task
net start my-task
pause
卸载 NSSM 服务: uninstall.bat
@echo off
nssm remove my-task confirm
pause
6. 常见用途案例
- 启动 Python/Node/Java 爬虫项目
- 运行 Webpack/Vite 前端打包服务
- 本地 Web 服务或 Socket 服务
- 启动 Elasticsearch、Redis、Kibana 等后端服务
- 合同、定时运行脚本
- Git 自动拉取脚本定期执行
总结
NSSM 是一个简单高效、零学习成本的工具,使用它可以将任何 .bat
脚本或程序转化为 Windows 服务,实现后台运行、开机自启、无窗口守护,特别适合后端开发和自动化脚本使用场景。
如果觉得有用,欢迎点赞、收藏、评论支持一下!
如需要基于 NSSM 的脚本模板或数据服务化实践案例,欢迎私信或评论交流~