Bases属性库不支持查询笔记正文,想把一些信息直接写在属性区
发现超链接在属性区是不渲染的
我特别想放在属性区的链接是库外文件的链接,形如 [平面图](<file:///C:\Users\Administrator\Desktop\平面图.pdf>)
试了一下这样写可以在笔记页面、bases表格视图里打开:
file:///C:/Users

注意不能用反斜杠\,类似zotero://open-pdf/library/items/xxxxx这类URI
但在卡片视图中显示正常,点击却无法跳转,似乎是因为渲染成了external-link而非metadata-link
并且因为无法加<>,导致文件名也无法加空格 ![]()
如果是刚需的话,分享一个我很早以前在notion的解决方案:复制到剪贴板后,用ahk脚本识别剪贴板,打开本地文件,类似这样:
; Alt+C - 一键直达文件/链接/搜索/网址(自动识别剪贴板内容)
<!c::
if (ErrorLevel) {
return
}
; 打开链接
if (RegExMatch(clipboard, "i)^(https?://|ftp://|edge://|zotero://|obsidian://|file:///)[^\s/$.?#].[^\s]*$")) {
Run, %clipboard%
}
; 打开文件
else if (RegExMatch(clipboard, "^(S:|T:|U:|V:|W:)\\") || FileExist(clipboard)) {
Run, %clipboard%
; Shellrun(clipboard) ; 非管理员方式打开
}
; 搜索
else {
; Run, https://www.bing.com/search?q=%clipboard%
Run, https://www.google.com/search?q=%clipboard%
}
return
谢谢
是刚需,但感觉用剪切板再跳转不如记在正文内,添加属性标记已经有文件了,点进笔记再点开库外文件
新版本这个被修复了,属性里正常用[文件](<file:///路径>)就可以:
谢谢提醒!方便多了
目前直接写在属性值里,笔记内和Bases都渲染成功
请教大佬有办法解决吗?感觉是Bases的公式应用:
我又有新需求,同样的文件夹中存储了不同的项目,如下
[库外文件](<file:///C:\Users\Administrator\Desktop\项目1.pdf>)
[库外文件](<file:///C:\Users\Administrator\Desktop\项目1.pdf>)
Obsidian笔记我命名也是项目1、项目2
Bases用公式组合:
“[库外文件](<file:///C:\Users\Administrator\Desktop\” + file.name + “.pdf>)”
能得到对应的链接,但是不渲染
如果也能渲染,那笔记可以删掉好几个属性了,笔记进行改名也不用再去逐一改属性值内容
可以用link函数类似这样写:
link("file:///C:/Users/用户名/Downloads/"+file.name, "📂"+file.name)
注意路径全都用斜杠,不添加<>
效果如图:
![]()
感谢大佬!那还能更近一步吗?属性值是列表,分别指向对应文件夹里的文件1、文件2
要提取列表第n项,就属性名加一个[n-1]就好了:
link("file:///C:/Users/用户名/Downloads/"+ 属性[0])
才发现我Windows10系统 这一步就不行 ![]()

加中括号,直接公式不支持

链接只是渲染了,不能跳转
手动输入链接为属性值,Obsidian更新后可以渲染+跳转
我这里一切正常,你得按照我上面发的格式,不能用反斜杠,也不能用尖括号
用这个map函数可以遍历列表属性:
属性名.map(link("file:///C:/Users/用户名/Downloads/"+ value, "📄"+value))
不过如果太多的话不是很好用,现在的bases表格似乎无法很方便地调整行高,放不下太多链接
效果如图:
谢谢~文件添加一个列表属性,实现了
这样添加一个属性值,公式比我之前预想的应用更广,也更方便过一段时间后看不懂公式了进行维护
库外文件.map(link("file:///C:/Users/Administrator/Desktop/"+file.name+"/"+value, value))
库外文件:
- 1.png
- 2.png
- 3.png
想显示内容也自定义,找ai修改成功,应该是最终版了 ↓
不添加属性,直接修改公式指向多个文件,显示内容也自定义
["","/桌面文件.pdf",file.name + "/平面图.png", file.name + "/平面图.png"].map(
link(
"file:///C:/Users/Administrator/Desktop" + value,
if(index == 0, "直接打开桌面📁", "桌面的文件","平面图", "立面图")
)
)
总结一下我目前属性中使用的库外链接
1.直接放入,无插件就行用
要打开的文件
链接:
[平面图](<file:///C:\Users\Administrator\Desktop\111\平面图.pdf>)
要打开的文件夹
路径:
[📁](<file:///C:\Users\Administrator\Desktop\111>)
缺点:资源管理器中复制地址后,不能直接使用
2.放入地址,Bases变化格式
本笔记为111.md
笔记添加的属性及属性值:
---
本文件夹所在文件夹路径: C:/Users/Administrator/Desktop
库外文件名称:
- 1.png
- 2.png
- 3.png
---
打开文件夹所用公式:
link("file:///" + 本文件夹所在文件夹路径+ "/" + file.name, "📁")
实际打开的路径:C:\Users\Administrator\Desktop\111
显示为:![]()
打开各文件使用的公式:
库外文件名称.map(
link(
"file:///" + 本文件夹所在文件夹路径+ "/" + file.name + "/" + value,"📄" + value
)
)
实际打开的路径:C:\Users\Administrator\Desktop\111\1.png
显示为:
1.png、
2.png、
3.png、
3.放入地址,dataview变化格式
---
文件所在文件夹路径: C:/Users/Administrator/Desktop
---
打开文件夹所用公式:
// 获取当前页面的属性
const page = dv.current();
const 库外文件夹 = page["本文件夹所在文件夹路径"];
const 库外文件 = page["库外文件名称"];
// 获取当前页面文件名
const currentFileName = dv.current().file.name.replace('.md', '');
// 对路径进行URL编码
function encodePath(path) {
return path.replace(/\\/g, '/').split('/').map(encodeURIComponent).join('/');
}
// 检查库外文件属性是否存在
if (!库外文件夹 || 库外文件夹.trim() === "") {
dv.paragraph("未设置'本文件夹所在文件夹路径'属性");
} else {
// 生成文件夹链接部分
const encodedFolder = encodePath(库外文件夹);
// 创建指向库外同名文件夹的链接
const encodedCurrentFileName = encodeURIComponent(currentFileName);
const folderLink = `- [库外📁](<file:///${encodedFolder}/${encodedCurrentFileName}>)`;
if (!库外文件 || 库外文件.length === 0) {
// 如果库外文件属性不存在,只显示文件夹链接
dv.paragraph(folderLink);
} else {
// 如果库外文件属性存在,生成完整的链接格式
const fileLinks = 库外文件.map(
filename => {
const encodedFile = encodeURIComponent(filename);
return `[${filename}](<file:///${encodedFolder}/${encodedCurrentFileName}/${encodedFile}>)`;
}
);
// 组合所有链接,用" | "分隔
const finalOutput = [folderLink, ...fileLinks].join(" | ");
// 输出结果
dv.paragraph(finalOutput);
}
}
得到结果:

在本笔记内显示
主要是配合Virtual Content插件使用
设定的属性「本文件夹所在文件夹路径」有值时才会有转换后的格式出现




