要实现仅共享单个/指定插件(而非全部),核心思路是:不为整个 plugins 目录创建软链接,而是为每个需要共享的插件单独创建软链接。以下是「极简无坑版」脚本和手动操作方法,适配所有Windows环境,避开括号/空格语法错误:
一、专属脚本:仅共享指定插件(支持多插件/多子库)
这个脚本可自定义「要共享的插件名」和「子库列表」,只创建指定插件的软链接,其他插件仍保持各库独立:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| @echo off
chcp 936 > nul 2>&1
title Obsidian 单插件共享工具
color 0A
:: ====================== 配置区(仅改这里)======================
set "主库根路径=D:\Obsidian\主库" :: 主库根目录(不要加.obsidian/plugins)
set "要共享的插件名=dataview" :: 插件文件夹名(如dataview、advanced-tables)
:: 子库列表:每行一个,路径带空格/括号需用双引号包裹
call :共享插件 "D:\Obsidian\子库1"
call :共享插件 "D:\Obsidian\子库2"
call :共享插件 "D:\Obsidian\工作笔记 (2026)"
:: =================================================================
echo.
echo ======================
echo 所有子库处理完成!
echo ======================
pause
exit /b
:: 【不要修改下面的代码】
:共享插件
set "子库根路径=%~1"
set "主库插件路径=%主库根路径%\.obsidian\plugins\%要共享的插件名%"
set "子库插件路径=%子库根路径%\.obsidian\plugins\%要共享的插件名%"
echo.
echo 正在处理:%子库根路径% → %要共享的插件名%
:: 检查主库插件是否存在
if not exist "%主库插件路径%" (
echo ❌ 错误:主库未找到该插件 → %主库插件路径%
goto :结束
)
:: 确保子库plugins目录存在(不存在则创建)
if not exist "%子库根路径%\.obsidian\plugins" (
md "%子库根路径%\.obsidian\plugins" > nul 2>&1
)
:: 删除子库原有该插件目录(避免冲突)
if exist "%子库插件路径%" (
echo 🗑️ 删除子库原有插件目录...
rd /s /q "%子库插件路径%" > nul 2>&1
if errorlevel 1 (
echo ⚠️ 警告:删除失败,请手动删除 %子库插件路径%
goto :结束
)
)
:: 创建单个插件的软链接
mklink /D "%子库插件路径%" "%主库插件路径%" > nul 2>&1
if errorlevel 1 (
echo ❌ 失败:创建软链接失败(请以管理员运行)
) else (
echo ✅ 成功:%子库插件路径% → %主库插件路径%
)
:结束
exit /b
|
二、使用步骤(无脑操作)
- 找到插件文件夹名:
进入主库 .obsidian/plugins 目录,找到要共享的插件文件夹名(如:- 高级表格 →
advanced-tables - 数据视图 →
dataview - 思维导图 →
mind-map - Excalidraw →
obsidian-excalidraw-plugin);
- 配置脚本:
记事本打开脚本,修改:主库根路径:主库的根目录(如 D:\Obsidian\主库);要共享的插件名:插件文件夹名(如 dataview);子库列表:添加需要共享该插件的子库路径(每行一个);
- 保存与运行:
- 保存为 ANSI 编码的
.bat; - 右键 → 以管理员身份运行,等待执行完成。
三、共享多个插件?(扩展用法)
如果需要同时共享多个插件(如既共享 Dataview 又共享 Advanced Tables),只需复制「配置区+共享逻辑」,示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| @echo off
chcp 936 > nul 2>&1
title Obsidian 多插件共享工具
color 0A
:: 共享第一个插件:Dataview
set "主库根路径=D:\Obsidian\主库"
set "要共享的插件名=dataview"
call :共享插件 "D:\Obsidian\子库1"
call :共享插件 "D:\Obsidian\子库2"
:: 共享第二个插件:Advanced Tables
set "要共享的插件名=advanced-tables"
call :共享插件 "D:\Obsidian\子库1"
call :共享插件 "D:\Obsidian\子库2"
echo.
echo 所有插件共享完成!
pause
exit /b
:: 共享逻辑(无需修改)
:共享插件
set "子库根路径=%~1"
set "主库插件路径=%主库根路径%\.obsidian\plugins\%要共享的插件名%"
set "子库插件路径=%子库根路径%\.obsidian\plugins\%要共享的插件名%"
echo.
echo 处理:%子库根路径% → %要共享的插件名%
if not exist "%主库插件路径%" (
echo ❌ 主库无该插件 → %主库插件路径%
goto :结束
)
if not exist "%子库根路径%\.obsidian\plugins" (
md "%子库根路径%\.obsidian\plugins" > nul 2>&1
)
if exist "%子库插件路径%" (
rd /s /q "%子库插件路径%" > nul 2>&1
)
mklink /D "%子库插件路径%" "%主库插件路径%" > nul 2>&1
if errorlevel 1 (
echo ❌ 创建失败(管理员权限)
) else (
echo ✅ 创建成功
)
:结束
exit /b
|
四、手动创建单个插件软链接(兜底方案)
如果不想用脚本,直接在管理员 CMD 中执行以下命令(替换成你的路径):
1
2
3
4
5
6
7
| :: 示例:共享 Dataview 插件到子库1
:: 1. 先确保子库plugins目录存在
md "D:\Obsidian\子库1\.obsidian\plugins" > nul 2>&1
:: 2. 删除子库原有Dataview(如有)
rd /s /q "D:\Obsidian\子库1\.obsidian\plugins\dataview" > nul 2>&1
:: 3. 创建软链接
mklink /D "D:\Obsidian\子库1\.obsidian\plugins\dataview" "D:\Obsidian\主库\.obsidian\plugins\dataview"
|
五、关键注意事项
- 插件文件夹名要准确:必须和主库
.obsidian/plugins 下的文件夹名完全一致(区分大小写); - 子库独立配置:共享后,插件的配置(如 Dataview 的查询设置)仍保存在子库
.obsidian/plugins/插件名/data.json 中,各库配置独立(仅插件本体共享); - 插件更新:只需在主库更新插件,所有共享的子库会自动同步(因为软链接指向主库插件文件);
- 权限问题:必须以管理员身份运行,否则创建软链接会失败。