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

PowerShell批量重命名如何替换文件名点号保留扩展名且正确处理带点文件夹

PowerShell批量替换文件名点号(区分文件与文件夹)解决方案

问题根因

原有代码的异常来自于PowerShell会为文件夹对象也自动计算BaseName和Extension属性:会把文件夹名称最后一个.之后的内容识别为扩展名,导致文件夹的完整名称被拆分,无法替换全部点号。

解决代码

针对文件和文件夹分别做逻辑判断处理即可实现需求:

# 可自行修改Replace方法的第二个参数为你需要的替换字符,比如空格' '、下划线'_'等
Get-ChildItem | Rename-Item -NewName {
    # 判断当前对象是否为文件夹
    if ($_.PSIsContainer) {
        # 文件夹:替换完整名称中的所有点号
        $_.Name.Replace(".", "-")
    }
    else {
        # 文件:仅替换扩展名前的点号,保留原扩展名
        $_.BaseName.Replace(".", "-") + $_.Extension
    }
}

补充说明

  • 你习惯使用的Dir是Get-ChildItem的别名,直接替换代码中的Get-ChildItem为Dir也可以正常运行
  • 若需要批量处理当前目录及所有子目录下的内容,可给Get-ChildItem添加-Recurse参数,建议同时搭配-Depth参数指定递归层级,避免层级过深出现误操作
  • 正式执行前可添加-WhatIf参数预览重命名结果,确认符合预期后再去掉该参数执行,示例:
    Get-ChildItem | Rename-Item -WhatIf -NewName { # 上述判断逻辑不变 }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:48:04