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

求可将*.msg文件上移一级存放到对应项目ID目录的PowerShell脚本

PowerShell 批量移动.msg文件脚本

完整可运行代码

$src = "..\Host Folder"

# 仅递归扫描后缀为.msg的文件,避免误操作其他类型文件
$msgFiles = Get-ChildItem -Path $src -Filter "*.msg" -File -Recurse

foreach ($file in $msgFiles) {
    # 获取.msg文件当前所在的字母子文件夹名称
    $subFolderName = $file.Directory.Name
    # 获取对应项目ID目录路径(文件移动的目标目录)
    $targetFolder = $file.Directory.Parent.FullName
    # 构造默认目标文件路径
    $targetFilePath = Join-Path -Path $targetFolder -ChildPath $file.Name

    # 重名冲突处理:目标目录已存在同名文件时,用原字母子文件夹名区分
    if (Test-Path -Path $targetFilePath -PathType Leaf) {
        $newFileName = "{0}({1}){2}" -f $file.BaseName, $subFolderName, $file.Extension
        $targetFilePath = Join-Path -Path $targetFolder -ChildPath $newFileName
    }

    # 执行移动,首次运行可添加 -WhatIf 参数预览移动结果,确认无误后删除即可
    Move-Item -Path $file.FullName -Destination $targetFilePath -Force
}

# 可选功能:移动完成后自动清理空的字母子文件夹,不需要可直接注释删除
Get-ChildItem -Path $src -Directory -Recurse | Where-Object { 
    $_.GetFiles().Count -eq 0 -and $_.GetDirectories().Count -eq 0 
} | Remove-Item -Force

功能说明

  • 自动识别层级:只会将.msg文件上移一级到所属的项目ID目录,不会移动到Host Folder根目录,完全保留项目ID层级
  • 自动处理重名:同一项目ID下的同名.msg文件会自动添加原所在字母文件夹名作为后缀区分,无重名则保留原文件名
  • 可选空目录清理:可以自动删除移动后无文件的空字母子文件夹

调试提示

首次验证时可在Move-Item行末尾添加-WhatIf参数,执行后只会输出移动预览结果,不会实际执行移动操作,确认规则符合预期后再删除-WhatIf参数正式运行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:57:05