You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell:仅含单个子目录时扁平化专辑目录结构

PowerShell 实现单光盘专辑目录结构优化

这需求我太熟了,之前整理音乐库的时候刚好处理过类似场景,给你一个精准的PowerShell脚本方案,完全匹配你的要求:

# 替换为你的音乐根目录(所有artist目录的上级文件夹)
$rootMusicPath = "D:\Music\Collection"

# 遍历所有artist目录
Get-ChildItem -Path $rootMusicPath -Directory | ForEach-Object {
    $artistFolder = $_
    # 遍历当前artist下的每一个title目录
    Get-ChildItem -Path $artistFolder.FullName -Directory | ForEach-Object {
        $titleFolder = $_
        # 获取title目录下的所有子目录
        $subFolders = Get-ChildItem -Path $titleFolder.FullName -Directory
        
        # 核心判断:只有一个子目录,且这个子目录名为"1"
        if ($subFolders.Count -eq 1 -and $subFolders[0].Name -eq "1") {
            $disc1Folder = $subFolders[0]
            
            Write-Host "正在处理专辑:$($titleFolder.Name)(艺术家:$($artistFolder.Name))"
            # 将disc1目录下的所有内容移动到title目录
            Move-Item -Path "$($disc1Folder.FullName)\*" -Destination $titleFolder.FullName -Force
            # 删除空的disc1目录
            Remove-Item -Path $disc1Folder.FullName -Force
            
            Write-Host "处理完成:已将光盘1内容移至专辑目录,并删除空的1目录`n"
        }
    }
}

关键逻辑说明

  • 层级遍历:脚本通过两层Get-ChildItem遍历artist→title的目录结构,精准定位需要处理的专辑目录
  • 条件判断:只在title目录下**仅有一个子目录,且该目录名为"1"**时执行操作,完全符合你“仅单张光盘时调整”的要求
  • 安全操作:Move-Item的-Force参数会自动处理同名文件(如果有),如果不想覆盖文件,可以去掉这个参数,脚本会报错提示冲突,方便你手动处理

测试建议

在正式运行脚本前,建议先做以下操作确保安全:

  1. 复制一小部分测试目录到单独文件夹,用测试目录路径替换$rootMusicPath运行脚本,验证效果
  2. 或者临时把Move-Item和Remove-Item换成Write-Output,预览脚本将要执行的操作,确认无误后再恢复原命令

内容的提问来源于stack exchange,提问作者schodge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:06:33