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

如何使用Rename-Item批量重命名文件实现文件名词语位置互换

批量重命名实现方案

核心逻辑:提取不含扩展名的文件主体名,按空格分割为独立词组数组,按需调整数组内元素顺序后重新拼接为新文件名,调用Rename-Item完成重命名操作。

场景1:固定位置词语互换(匹配示例需求)

针对你举的ABCD 12550.txt重命名为12550 ABCD.txt这类固定位置词组互换的需求,可直接使用以下脚本:

# 先切换到待处理文件所在的目录
cd "C:\替换为你的文件实际存储路径"

# 筛选当前目录下的txt文件,如需处理所有文件可删除-Filter参数
Get-ChildItem -File -Filter *.txt | ForEach-Object {
    # 按空格拆分主体文件名,自动兼容连续多空格的情况
    $nameSegments = $_.BaseName -split '\s+'
    # 仅当文件名拆分后至少有2段词组时执行操作,避免误改单段名称的文件
    if ($nameSegments.Count -ge 2) {
        # 调整词组顺序:示例为第2段移到最前,第1段移到第2位,后续词组保持原顺序
        $newBaseName = ($nameSegments[1], $nameSegments[0] + $nameSegments[2..($nameSegments.Count-1)]) -join ' '
        # 拼接扩展名生成完整新文件名
        $newFullName = "$newBaseName$($_.Extension)"
        # 加-WhatIf参数时仅预览重命名结果,确认无误后删除该参数即可实际执行
        Rename-Item -Path $_.FullName -NewName $newFullName -WhatIf
    }
}

注意:首次运行请保留-WhatIf参数,控制台会输出所有文件的新旧名称对照,确认结果完全符合预期后,移除-WhatIf再运行脚本即可完成实际重命名。

场景2:指定词语移动到文件名末尾

如果需要把某个固定关键词统一移动到所有匹配文件的文件名末尾,可使用以下脚本:

# 切换到待处理文件所在目录
cd "C:\替换为你的文件实际存储路径"
# 定义需要移动到末尾的目标词语
$moveToEndWord = "替换为你要移动的指定词语"

Get-ChildItem -File | ForEach-Object {
    $nameSegments = $_.BaseName -split '\s+'
    # 仅处理文件名中包含目标词语的文件
    if ($nameSegments -contains $moveToEndWord) {
        # 拆分出除目标词外的其余词组,保持原有顺序
        $remainSegments = $nameSegments | Where-Object { $_ -ne $moveToEndWord }
        # 其余词组在前,目标词拼在末尾
        $newBaseName = ($remainSegments + $moveToEndWord) -join ' '
        $newFullName = "$newBaseName$($_.Extension)"
        Rename-Item -Path $_.FullName -NewName $newFullName -WhatIf
    }
}

自定义调整说明

  • 如需递归处理子文件夹内的所有文件,给Get-ChildItem命令添加-Recurse参数即可
  • 词组顺序可通过调整$nameSegments的数组索引自由定义,支持任意位置的词组互换、前移、后移操作
  • 脚本默认按单个/多个连续空格作为词组分隔符,和你描述的文件名命名规则完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:27:27