Google chrome 使用Powershell删除Chrome书签
我正在powershell中寻找一种方法来删除书签并将其添加到chrome中。Chrome书签存储在如下格式的JSON文件中,实际书签存储在$data.root.bookmark_bar.children对象中。我试过这样的方法:Google chrome 使用Powershell删除Chrome书签,google-chrome,powershell,Google Chrome,Powershell,我正在powershell中寻找一种方法来删除书签并将其添加到chrome中。Chrome书签存储在如下格式的JSON文件中,实际书签存储在$data.root.bookmark_bar.children对象中。我试过这样的方法: $data = Get-content $chromebookmarkfile | out-string | ConvertFrom-Json $data | Where-Object {$data.Roots.Bookmark_bar.children.Na
$data = Get-content $chromebookmarkfile | out-string | ConvertFrom-Json
$data | Where-Object {$data.Roots.Bookmark_bar.children.Name -Notmatch "^NA"} | Convertto-JSON | Out-File "C:\Users\Name\Desktop\bookmarkupdated.js"
$json = Get-Content $chromebookmarkfile -Raw | ConvertFrom-Json
$json.Roots.Bookmark_bar.children = @($json.Roots.Bookmark_bar.children | where { $_.name -notmatch "^NA" })
$json | ConvertTo-Json -Depth 10 | Out-File "C:\Users\Name\Desktop\bookmarkupdated.js" -Encoding UTF8
它似乎删除了所有的书签
> { "checksum": "f8d56bf82388c64d566247e1f510d0c8", "roots": {
> "bookmark_bar": {
> "children": [ {
> "date_added": "13186673111751399",
> "id": "5",
> "meta_info": {
> "last_visited_desktop": "13189831127309905"
> },
> "name": "Facebook",
> "type": "url",
> "url": "https://www.facebook.com/"
> }],
> "date_added": "13186673028532299",
> "date_modified": "13189832329106862",
> "id": "1",
> "name": "Bookmarks bar",
> "type": "folder"
> },
> "other": {
> "children": [ ],
> "date_added": "13186673028532314",
> "date_modified": "0",
> "id": "2",
> "name": "Other bookmarks",
> "type": "folder"
> },
> "synced": {
> "children": [ ],
> "date_added": "13186673028532317",
> "date_modified": "0",
> "id": "3",
> "name": "Mobile bookmarks",
> "type": "folder"
> } }, "version": 1 }
非常感谢您的帮助。您可以这样做:
$data = Get-content $chromebookmarkfile | out-string | ConvertFrom-Json
$data | Where-Object {$data.Roots.Bookmark_bar.children.Name -Notmatch "^NA"} | Convertto-JSON | Out-File "C:\Users\Name\Desktop\bookmarkupdated.js"
$json = Get-Content $chromebookmarkfile -Raw | ConvertFrom-Json
$json.Roots.Bookmark_bar.children = @($json.Roots.Bookmark_bar.children | where { $_.name -notmatch "^NA" })
$json | ConvertTo-Json -Depth 10 | Out-File "C:\Users\Name\Desktop\bookmarkupdated.js" -Encoding UTF8
这就像一个创建文件的梦。然而,当我强行创建文件的文本时,我遇到了类似的问题……当我用脚本创建的新文件替换当前书签文件时,Chrome不会加载任何书签。但是,如果我打开Chrome创建的原始书签文件,覆盖脚本创建的书签文件中的所有文本,它就会工作并删除正确的书签。这个让我抓狂。这几乎就像Chrome应用程序在文件上留下指纹一样。我修复了它。看起来Chrome将文件编码为UTF-8,powershell的默认值有所不同。这修复了问题:$json | ConvertTo json-Depth 10 | Out文件“d:\tmp\bookmarkupdated.js”-编码UTF8@Thomas很好的发现。我已经在回答中包括了这一点。