jack1
(jiang)
1
各位大佬你们好:
我想实现的效果是这样的,首相使用dataviewjs 搜索出来相应的结果,比如按照标签,这一步已经实现。
现在是想在搜索出来的这些笔记文件插入一些内容,比如插入标签 或者关键词等,当前主要是想插入标签。也就是对笔记文件做插入内容的操作,但是我看dataviewjs 之说如何查找笔记,并没有写入的操作说明。
其实写入的操作场景还是很需要的,因为比如说我想对某一个标签的所有笔记 添加一个接近的标签,以方便搜索的时候更加容易一些。
所以各位大佬帮忙给看一下,如何使用代码自动实现,查询后插入内容。
非常感谢!!!

类似如下代码需求:
let files = dv.pages('"project/2023/172"')
for(let f of files) {
let content = await app.vault.readRaw(f.file.path)
content = content.split('\n')
//过滤带有某一个标签的笔记
let headers = content.filter(p=>/#+ (.*aaa?)/. test (p))
//插入的字符串
let insertStr =" #bbb"
//此处是不知道如何实现的功能部分。将笔记中增加一个字符串。如果能指定 添加的位置更好,
//比如在某一个标签后面,如果不能指定位置,就能增加就可以。
//如下代码值为表达意思
//此处需要大佬给出建议,如何实现如下功能
content =content +insertStr ;
f.file=content ;
//显示出来连接列表
dv.paragraph(f.file.link,'')
希望obsidain越来越完善 强大 ,再次感谢
dataview 确实是没有提供写入的操作,它本身也是为查询而生的嘛,但我们可以使用 ob 自己的 api 实现写入
```dataviewjs
let file = dv.current()
let content = await app.vault.readRaw(file.file.path) // 这就是目标文件的内容
// 对 content 进行修改
let tags_line = content.split('\n').find(p=>p.startsWith('tags: '))
content = content.replace(tags_line,tags_line+', 新标签')
await app.vault.modify(app.vault.getAbstractFileByPath(file.file.path),content)
```
温馨提示:对库进行批量修改前一定要先备份一下
1 个赞
liux
(calmwaves)
3
app.vault.modify是在文末追加还是直接覆盖重写呀
还有这个需求或许考虑另一种方式,全局的正则替换?
1 个赞
是覆盖,正则替换也好,普通替换也好,反正内容都拿出来了,想咋弄咋弄,只要达到目的就行了
1 个赞
liux
(calmwaves)
5
嗯确实,只是js代码实现替换的话没有预览啥的确实很容易出问题,而且写成dvjs的话一切到阅读模式就会运行一次
我个人觉得用vscode来进行查找替换能预览,不容易出问题(当然我仍旧是会提前备份一下
1 个赞
所以我遇到需要批量修改的东西都是在控制台做的,比如批量改名,预览这玩意倒是没办法,只能寄希望于自己的编程技术不错,没有bug 
1 个赞