navicat 16 不支持 com/dll/http 等接口调用任务,唯一可靠方式是命令行执行 --run-task 参数配合导出的 .ntb 文件;需注意路径规范、权限配置、变量语法及连接信息导出。
navicat 16 本身不提供外部程序直接调用任务的 api 或 ipc 接口,唯一稳定可行的方式是:用命令行启动 navicat.exe 并传入 --run-task 参数执行已导出的 .ntb 任务文件。
为什么不能用 COM / DLL / HTTP 接口触发?
Navicat 没有暴露进程间通信能力,也不运行后台服务;它不是 Server 类应用。所谓“自动化任务”在 Navicat 内部只是静态作业定义(.ntb 文件),没有监听端口、不注册 COM 对象、不提供 REST 接口。试图用 Python 的 win32com 或 PowerShell 的 Invoke-RestMethod 调用,结果只会是连接拒绝或模块未找到。
- 所有“远程触发”类需求(如 Jenkins 调度、Python 脚本控制、企业运维平台集成)都必须走命令行路径
- macOS/Linux 下同理:必须用
open -a "Navicat Premium 16" --args --run-task /path/to/task.ntb或./navicat --run-task /path/to/task.ntb(取决于安装方式) - 若 Navicat 正在运行,
--run-task会复用已有进程;若未运行,则启动新实例并执行后自动退出(除非任务中含交互操作)
--run-task 必须配合导出的 .ntb 文件使用
你在 Navicat 界面里创建的“自动运行”任务,只是 UI 配置,不会自动生成可执行实体。必须右键该任务 → “导出任务”,保存为 .ntb 文件,才能被命令行识别。
- 导出时勾选“包含连接信息”——否则跨机器执行时可能报
Connection not found - 路径中不能含中文或空格,或需用英文引号包裹,例如:
--run-task "C:\navicat\tasks\backup_daily.ntb" - 任务里若含变量(如
${date:yyyyMMdd}),变量会在 Navicat 启动时实时解析,无需外部脚本拼接
Windows 下常踩的坑:路径、权限与工作目录
直接双击快捷方式或从 CMD 运行失败,90% 出在这三处:
-
Navicat.exe路径写错:常见位置是"C:\Program Files\PremiumSoft\Navicat Premium 16\Navicat.exe",注意带空格必须加引号 - 以 SYSTEM 或低权限用户运行(如 Windows 任务计划中设为“不存储密码”)→ Navicat 无法读取用户级连接配置,导致
Connection not found - 工作目录不是 Navicat 安装目录 → 某些旧版会因找不到资源 DLL 报错
0xc0000135;建议在快捷方式“起始位置”字段填上 Navicat 安装路径
快捷方式制作要点(Windows)
右键桌面 → 新建快捷方式,目标栏填完整命令:
"C:\Program Files\PremiumSoft\Navicat Premium 16\Navicat.exe" --run-task "C:\navicat\tasks\backup_daily.ntb"
“起始位置”填:C:\Program Files\PremiumSoft\Navicat Premium 16\;“运行方式”建议选“最小化”,避免弹窗干扰。
- 不要省略双引号,尤其路径含空格时
- 不要在参数末尾加
&或start,这会让 CMD 启动后立即返回,而 Navicat 实际还没执行完 - 测试前先手动双击该快捷方式,观察是否真能触发备份、是否生成预期文件名(验证变量是否生效)
真正麻烦的从来不是命令怎么写,而是任务文件里有没有埋坑:比如用了未导出的连接、变量格式写错成 ${day}(正确是 ${date:yyyyMMdd})、或者备份路径指向了无写入权限的系统目录。这些错误不会在快捷方式点击时立刻报错,而是静默失败或覆盖旧文件。











