# 票 11 bruno-sync tag 迁移收尾:写 11 个新 folder.bru + 删 49 个旧文件(删除前验证新文件已存在) $ErrorActionPreference = 'Stop' $root = 'E:\code\crm-api-docs' $utf8 = New-Object System.Text.UTF8Encoding($false) # ---------- 1. folder.bru(name 与源码 tag 一致;seq 沿旧惯例) ---------- $folders = @( @('A7 后台管理\业务规则', '业务规则', 10), @('A7 后台管理\业务规则\商机规则', '商机规则', 1), @('A7 后台管理\业务规则\商机规则\商机阶段设置', '商机阶段设置', 10), @('A7 后台管理\业务规则\商机规则\方案卡模板', '方案卡模板', 20), @('A7 后台管理\业务规则\商机规则\公海与提醒', '公海与提醒', 30), @('A7 后台管理\业务规则\商机规则\商机相关字典', '商机相关字典', 40), @('A7 后台管理\业务规则\客户规则', '客户规则', 2), @('A7 后台管理\系统设置', '系统设置', 11), @('A7 后台管理\系统设置\数据字典', '数据字典', 1), @('A7 后台管理\系统设置\数据字典\分组', '分组', 1), @('A7 后台管理\系统设置\数据字典\字典项', '字典项', 2) ) foreach ($f in $folders) { $dir = Join-Path $root $f[0] if (-not (Test-Path -LiteralPath $dir)) { throw ('missing dir: ' + $dir) } $content = "meta {`n name: $($f[1])`n seq: $($f[2])`n}`n" [IO.File]::WriteAllText((Join-Path $dir 'folder.bru'), $content, $utf8) } Write-Output ('folder.bru written: ' + $folders.Count) # ---------- 2. 删除旧文件(每个文件删除前验证对应新文件已存在,否则保留并报错) ---------- $mig = @( @('A7 后台管理\商机规则\阶段模板', 'A7 后台管理\业务规则\商机规则\商机阶段设置'), @('A7 后台管理\商机规则\方案卡模板', 'A7 后台管理\业务规则\商机规则\方案卡模板'), @('A7 后台管理\商机规则\公海规则', 'A7 后台管理\业务规则\商机规则\公海与提醒'), @('A7 后台管理\客户管理设置\超期未跟进提醒', 'A7 后台管理\业务规则\客户规则\客户管理设置(超期未跟进提醒)'), @('A7 后台管理\客户管理设置\查重设置', 'A7 后台管理\业务规则\客户规则\客户管理设置(客户查重设置)'), @('A7 后台管理\数据字典\分组', 'A7 后台管理\系统设置\数据字典\分组'), @('A7 后台管理\数据字典\字典项', 'A7 后台管理\系统设置\数据字典\字典项') ) $deleted = 0 $errors = @() foreach ($m in $mig) { $oldDir = Join-Path $root $m[0] foreach ($fn in (Get-ChildItem -LiteralPath $oldDir -Filter '*.bru' | Select-Object -ExpandProperty Name)) { $must = Join-Path (Join-Path $root $m[1]) $fn if (-not (Test-Path -LiteralPath $must)) { $errors += ('NEW MISSING, keep old: ' + $m[0] + '\' + $fn) continue } Remove-Item -LiteralPath (Join-Path $oldDir $fn) -Force $deleted++ } } # 旧父目录 folder.bru(迁移后父目录空掉) foreach ($pair in @( @('A7 后台管理\商机规则\folder.bru', 'A7 后台管理\业务规则\商机规则\folder.bru'), @('A7 后台管理\数据字典\folder.bru', 'A7 后台管理\系统设置\数据字典\folder.bru'))) { if (Test-Path -LiteralPath (Join-Path $root $pair[1])) { Remove-Item -LiteralPath (Join-Path $root $pair[0]) -Force $deleted++ } else { $errors += ('NEW MISSING, keep old: ' + $pair[0]) } } Write-Output ('deleted: ' + $deleted) $errors | ForEach-Object { Write-Output (' ! ' + $_) } # ---------- 3. 清理空目录(仅删确认已空的目录) ---------- foreach ($d in @('A7 后台管理\商机规则\阶段模板', 'A7 后台管理\商机规则\方案卡模板', 'A7 后台管理\商机规则\公海规则', 'A7 后台管理\商机规则', 'A7 后台管理\客户管理设置\超期未跟进提醒', 'A7 后台管理\客户管理设置\查重设置', 'A7 后台管理\客户管理设置', 'A7 后台管理\数据字典\分组', 'A7 后台管理\数据字典\字典项', 'A7 后台管理\数据字典')) { $full = Join-Path $root $d if ((Test-Path -LiteralPath $full) -and -not (Get-ChildItem -LiteralPath $full)) { Remove-Item -LiteralPath $full -Force Write-Output ('rmdir: ' + $d) } } # ---------- 4. 台账 ---------- Write-Output '--- new structure ---' foreach ($d in @('A7 后台管理\业务规则', 'A7 后台管理\业务规则\商机规则', 'A7 后台管理\业务规则\商机规则\商机阶段设置', 'A7 后台管理\业务规则\商机规则\方案卡模板', 'A7 后台管理\业务规则\商机规则\公海与提醒', 'A7 后台管理\业务规则\商机规则\商机相关字典', 'A7 后台管理\业务规则\客户规则', 'A7 后台管理\业务规则\客户规则\客户管理设置(超期未跟进提醒)', 'A7 后台管理\业务规则\客户规则\客户管理设置(客户查重设置)', 'A7 后台管理\系统设置', 'A7 后台管理\系统设置\数据字典', 'A7 后台管理\系统设置\数据字典\分组', 'A7 后台管理\系统设置\数据字典\字典项')) { $full = Join-Path $root $d $cnt = @(Get-ChildItem -LiteralPath $full).Count Write-Output ('{0,2} files: {1}' -f $cnt, $d) } foreach ($d in @('A7 后台管理\商机规则', 'A7 后台管理\数据字典', 'A7 后台管理\客户管理设置')) { Write-Output ('old {0} exists: {1}' -f $d, (Test-Path -LiteralPath (Join-Path $root $d))) }