在现有 Windows Batch Script Manager 基础上,做一版可运行于 Windows / macOS / Linux 的跨平台脚本管理器的功能与接口清单。
当前实现:已创建 mac/ 与 linux/ 目录,主程序 main.py 在 macOS/Linux 上会自动加载对应平台实现(配置路径、登录自启、脚本启动)。在项目根目录执行 python main.py 即可(Mac 或 Linux 上)。
| 序号 |
功能 |
Windows 现状 |
Mac/Linux 实现要点 |
| 1 |
脚本列表:添加/编辑/删除/复制 |
✅ WindowsBatchScriptManager_scripts.json |
同:JSON 配置,路径/工作目录/解释器按平台解析 |
| 2 |
多种类型:批处理/Python/Node/Shell 等 |
✅ .bat/.cmd/.py/.js/.ps1… |
Mac/Linux:.sh、.py、.js、.command;无 .bat/.cmd,用 shell 替代 |
| 3 |
启动 / 停止 / 重启 |
✅ subprocess + CREATE_NEW_CONSOLE |
Mac: open -a Terminal 或 subprocess;Linux: xterm/gnome-terminal 或 subprocess;停止统一用进程树 kill |
| 4 |
状态与 PID、定时刷新 |
✅ psutil / 4 秒轮询 |
同:psutil 跨平台;刷新间隔可配置 |
| 5 |
运行中接管(按路径匹配已有进程) |
✅ scan_running_script_processes |
同思路:枚举进程 + 命令行/可执行路径匹配(Mac/Linux 用 psutil 或 /proc) |
| 6 |
端口识别、标题、访问 |
✅ psutil + HTTP 取 title |
同:psutil 跨平台;localhost 访问逻辑一致 |
| 7 |
开机/登录自启 |
✅ 注册表 Run |
Mac: launchd 或 登录项;Linux: systemd user 或 XDG autostart |
| 8 |
定时任务(每天/每时/每分/每周/每月) |
✅ 自研轮询 |
可保留自研,或 Mac 用 launchd、Linux 用 systemd timer 委托(复杂度高,先自研) |
| 9 |
保活(崩溃自动重启) |
✅ 定时检查 pid 再启动 |
同:定时检查进程是否存在,不存在则重新 start_script |
| 10 |
日志输出到 logs/ |
✅ 重定向 stdout/stderr |
同:subprocess 重定向到文件 |
| 11 |
分组、筛选、关键词搜索 |
✅ 纯 UI/数据 |
无平台差异 |
| 12 |
执行历史、异常通知、Webhook |
✅ JSON + 弹窗 |
无平台差异 |
| 13 |
导出/导入配置 |
✅ JSON |
无平台差异 |
| 14 |
本地 IP / 外网 IP |
✅ socket + API |
同:socket 与 HTTP 跨平台;联网判断逻辑可复用 |
| 平台 |
方式 |
说明 |
| Windows |
subprocess.CREATE_NEW_CONSOLE 或 cmd /c start |
已有 |
| macOS |
open -a Terminal script.sh 或 subprocess 不新开窗 |
需选:新开 Terminal.app 还是当前进程子进程 |
| Linux |
xterm -e "cmd" / gnome-terminal -- / konsole -e 或 subprocess |
需检测桌面环境或配置用哪种终端 |
| 类型 |
Windows |
macOS |
Linux |
| 批处理 |
cmd /c 或 powershell |
无;用 shell 代替 |
无;用 bash/sh 代替 |
| Shell |
bash(Git Bash) |
/bin/bash、zsh |
/bin/bash、sh |
| Python |
python/py |
python3 |
python3 |
| Node |
node |
node |
node |
| PowerShell |
powershell -File |
可选 pwsh |
可选 pwsh(若安装) |
| 平台 |
方式 |
配置位置/命令 |
| Windows |
注册表 HKCU\…\Run |
已有 |
| macOS |
launchd 用户级 |
~/Library/LaunchAgents/xxx.plist;launchctl load |
| macOS 备选 |
登录项 |
用 AppleScript/System Events 添加登录项 |
| Linux |
systemd user |
~/.config/systemd/user/xxx.service;systemctl --user enable |
| Linux 备选 |
XDG 自启动 |
~/.config/autostart/xxx.desktop |
| 平台 |
方式 |
| 全平台 |
psutil.process_iter();p.exe()、p.cmdline()、p.cwd() |
| Linux 补充 |
/proc//exe、/proc//cmdline 可做回退 |
| 平台 |
方式 |
| 全平台 |
psutil:先取 children,递归 kill;最后 kill 父进程 |
| 平台 |
建议 |
| Windows |
当前:程序同目录 WindowsBatchScriptManager_scripts.json |
| macOS |
~/Library/Application Support/WindowsBatchScriptManager/ 或 程序同目录 |
| Linux |
~/.config/WindowsBatchScriptManager/ 或 $XDG_CONFIG_HOME |
-
阶段 1:跨平台跑通
- 用条件判断
sys.platform == "win32" / "darwin" / "linux" 分支。
- 统一:配置读写、列表 UI、启动/停止/重启(先不新开终端,仅 subprocess)。
- 启动脚本:按类型选解释器(python3、node、bash),不依赖 .bat/.cmd。
-
阶段 2:平台特性补全
- Windows:保持现有注册表、CREATE_NEW_CONSOLE、.bat/.ps1。
- macOS:launchd 自启;可选
open -a Terminal 新开终端。
- Linux:systemd user 或 autostart 自启;可选 xterm/gnome-terminal 新开终端。
-
阶段 3:体验对齐
- 运行中接管、端口、定时任务、保活、历史、通知、IP 等与现有逻辑对齐。
- 配置路径按平台选应用数据目录,并做迁移(从“同目录”到“标准目录”可选)。
| 项目 |
建议 |
说明 |
| GUI |
保持 Tkinter 或 迁到 PySide6 |
Tk 已跨平台;PySide6 更现代、与 Shogun 一致 |
| 进程 |
psutil |
已用,跨平台 |
| 配置 |
JSON |
已用 |
| 打包 |
PyInstaller(Windows);py2app(Mac);PyInstaller 或 AppImage(Linux) |
各平台分别打 |
WindowsBatchScriptManager/ # 或改名为 ScriptManager
├── main.py # 入口,按平台分支
├── core/
│ ├── config.py # 配置路径 + 读写(按平台)
│ ├── runner.py # start_script / stop_script(按平台)
│ ├── process_utils.py # 进程枚举、杀树、端口(psutil)
│ └── schedule.py # 定时任务轮询
├── gui/
│ ├── main_window.py # 主窗口、表格、工具栏
│ └── dialogs.py # 编辑、历史、通知等弹窗
├── platform/
│ ├── win32.py # 注册表、CREATE_NEW_CONSOLE、.bat
│ ├── darwin.py # launchd、open -a Terminal
│ └── linux.py # systemd/autostart、xterm/gnome-terminal
├── config.json
└── CROSS_PLATFORM_DESIGN.md # 本清单
本清单可直接作为「跨平台版脚本管理器」的需求与实现对照表使用;若只做原型,可先完成「阶段 1」再按需补「阶段 2/3」。