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

PowerShell提取文件名分段创建文件夹并移动对应文件实现方法

PowerShell多段提取文件名创建文件夹并移动文件方案

适配需求的完整代码

# 请先替换为你存放目标文件的实际目录路径
$directory = "C:\你的文件存储路径"

Get-ChildItem -File -Path $directory -Filter "*.*" | 
ForEach-Object {
    # 按下划线拆分文件名
    $segments = $_.Name.Split("_")
    # 过滤不符合命名规则的文件,避免报错
    if ($segments.Count -lt 3) {
        Write-Warning "文件:$($_.Name) 命名不符合要求,跳过处理"
        continue
    }
    # 拼接目标文件夹名称:SURNAME FIRSTNAME CODE1
    $targetFolderName = "$($segments[0]) $($segments[1]) $($segments[2])"
    $targetFolderFullPath = Join-Path $directory $targetFolderName
    # 创建文件夹,已存在时自动跳过
    New-Item -ItemType Directory -Path $targetFolderFullPath -Force | Out-Null
    # 移动文件到对应文件夹
    Move-Item -Path $_.FullName -Destination (Join-Path $targetFolderFullPath $_.Name)
}

代码修改说明

你原有代码的逻辑已经很完整,只需要调整文件名提取规则即可:

  • 原有代码仅提取了下划线拆分后的第0位元素(即SURNAME)作为文件夹名,现在提取拆分后前3位元素,用空格拼接即可匹配你的需求
  • 新增了命名规则校验逻辑,避免拆分后元素不足3位的文件导致索引越界报错
  • 用Join-Path拼接路径,避免手动拼接时出现斜杠遗漏/重复的兼容性问题
  • 新增Out-Null屏蔽文件夹创建时的多余输出信息

运行注意事项

  • 首次运行前建议先备份所有待处理文件,避免配置错误导致文件丢失
  • 可先把Move-Item行替换为Write-Output $targetFolderFullPath,先校验生成的文件夹名称是否符合预期,确认无误后再执行移动操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:15:03