diff --git a/Init-DeveloperDrive.ps1 b/Init-DeveloperDrive.ps1 index d42a034..0db91de 100644 --- a/Init-DeveloperDrive.ps1 +++ b/Init-DeveloperDrive.ps1 @@ -1,67 +1,37 @@ -# ========================================================================= -# 程序员 D 盘生产力开发环境初始化脚本 -# ========================================================================= +# 1_Map_Dev_Caches.ps1 +$TargetBase = "D:\Data\Symlink_Storage" -$DriveLetter = "D:\" - -# 1. 检查 D 盘是否存在 -if (!(Test-Path $DriveLetter)) { - Write-Error "错误:未检测到 D 盘,请检查驱动器盘符。" - return +# 定义映射关系:C盘路径 = D盘子路径 +$Mappings = @{ + "$HOME\.m2" = "$TargetBase\.m2" + "$HOME\.gradle" = "$TargetBase\.gradle" + "$HOME\.npm" = "$TargetBase\npm-cache" + "$env:LOCALAPPDATA\pip\cache" = "$TargetBase\pip-cache" } -# 2. 定义要创建的目录结构 -$Directories = @( - "Workspace\Github", - "Workspace\Company", - "Workspace\Lab", - "Environment\Java", - "Environment\Python", - "Environment\Nodejs", - "Environment\Go", - "Software\Portable", - "Software\Installers", - "DevTools\JetBrains", - "DevTools\VSCode", - "DevTools\Databases", - "Data\Docker", - "Data\VMs", - "Data\DB_Storage", - "Data\Symlink_Storage\.m2", # 用于映射 C 盘 Maven 仓库 - "Data\Symlink_Storage\.gradle", # 用于映射 C 盘 Gradle 缓存 - "Data\Symlink_Storage\npm-cache", # 用于映射 C 盘 npm 缓存 - "Document\Wiki", - "Document\eBooks", - "Document\Assets", - "Temp" -) +foreach ($Source in $Mappings.Keys) { + $Destination = $Mappings[$Source] -Write-Host "--- 开始初始化 $DriveLetter 目录结构 ---" -ForegroundColor Cyan - -# 3. 循环创建目录 -foreach ($Dir in $Directories) { - $FullPath = Join-Path $DriveLetter $Dir - if (!(Test-Path $FullPath)) { - New-Item -Path $FullPath -ItemType Directory | Out-Null - Write-Host "[成功] 已创建: $FullPath" -ForegroundColor Green - } else { - Write-Host "[跳过] 已存在: $FullPath" -ForegroundColor Yellow + # 如果 D 盘目标目录不存在,则创建 + if (!(Test-Path $Destination)) { + New-Item -Path $Destination -ItemType Directory -Force | Out-Null } -} -# 4. 在根目录生成一个结构说明文件 -$ReadmeContent = @" -# D 盘目录结构说明书 -- Workspace: 存放所有代码,建议只放 Git 仓库。 -- Environment: 存放各语言 SDK、运行时。 -- Software: 存放安装包和绿色版软件。 -- DevTools: 存放 IDE 和开发工具。 -- Data: 存放虚拟机、Docker 镜像及 C 盘映射过来的缓存文件。 -- Document: 个人知识库、书籍和设计素材。 -- Temp: 定期清理的临时实验区。 -"@ + if (Test-Path $Source) { + # 如果 C 盘已经是符号链接,跳过 + $folder = Get-Item $Source + if ($folder.Attributes -match "ReparsePoint") { + Write-Host "[跳过] $Source 已经是映射状态" -ForegroundColor Yellow + continue + } -$ReadmePath = Join-Path $DriveLetter "README_Layout.md" -$ReadmeContent | Out-File -FilePath $ReadmePath -Encoding utf8 + # 移动现有文件到 D 盘 + Write-Host "[处理] 正在搬移 $Source -> $Destination" -ForegroundColor Cyan + Move-Item -Path "$Source\*" -Destination $Destination -Force -ErrorAction SilentlyContinue + Remove-Item -Path $Source -Recurse -Force + } -Write-Host "--- 初始化完成!说明文件已生成在 $DriveLetter ---" -ForegroundColor Cyan \ No newline at end of file + # 创建符号链接 (Junction) + New-Item -Path $Source -ItemType Junction -Value $Destination + Write-Host "[成功] 已建立链接: $Source" -ForegroundColor Green +} \ No newline at end of file