Edge(Chromium内核)与Chrome书签注入脚本问题:书签名称丢失
解决Chromium内核浏览器(Edge/Chrome)书签名称重启后清空的问题
问题根源
你的脚本添加书签时缺少Chromium书签系统要求的**date_added元数据字段,同时未正确设置唯一的id**值。浏览器重启时会校验书签完整性,发现缺少必要字段后会自动重置name字段为空。
修复方案
修改脚本,为新书签补充以下必填/推荐字段,并确保修改文件时浏览器处于关闭状态:
date_added:Chromium专属格式时间戳(从1601年1月1日起计算的微秒数)id:全局唯一的数值ID(需避免与现有书签重复)- 操作前关闭浏览器,防止进程覆盖修改内容
修正后的PowerShell脚本
$bookmarkPath = "$env:localappdata\Microsoft\Edge\User Data\Default\bookmarks" # 关闭Edge浏览器,避免文件被锁定或覆盖 if (Get-Process -Name msedge -ErrorAction SilentlyContinue) { Stop-Process -Name msedge -Force Start-Sleep -Seconds 2 } # 读取并解析bookmarks文件为JSON对象 $Bookmarks = Get-Content -Path $bookmarkPath -Raw | ConvertFrom-Json # 生成Chromium格式的date_added时间戳 $epoch = Get-Date -Date "1601-01-01" $dateAdded = [Math]::Floor((Get-Date) - $epoch).TotalMicroseconds # 获取当前最大书签ID,生成新的唯一ID $maxId = ($Bookmarks.roots.bookmark_bar.children.id | Measure-Object -Maximum).Maximum $newId = if ($maxId) { $maxId + 1 } else { 1 } $NewBookmark = [pscustomobject][ordered]@{ guid = (New-Guid).Guid id = $newId.ToString() name = 'Name from CSV' type = 'url' url = 'URL from CSV' date_added = $dateAdded.ToString() date_last_used = "0" show_icon = $true source = 'user_copy' } # 添加新书签到书签栏 $Bookmarks.roots.bookmark_bar.children += $NewBookmark # 移除校验和,让浏览器重新生成 $Bookmarks.psobject.properties.remove('checksum') # 写入修改后的内容 Try { $Bookmarks | ConvertTo-Json -Depth 10 | Set-Content -Path $bookmarkPath -Force } catch { Write-Error $_.Exception.Message }
关键说明
date_added字段:这是Chromium书签的核心元数据,缺失会触发浏览器的自动修复逻辑,直接清空name字段。id字段:必须是唯一的字符串格式数值,浏览器依赖它识别书签,重复ID可能引发各类异常。- 浏览器状态:修改
bookmarks文件前必须完全关闭浏览器,否则后台进程会在退出时覆盖你的修改内容。
内容的提问来源于stack exchange,提问作者DavidF
相关产品推荐
相关产品推荐

