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

PowerShell中如何修改文件夹名称?求Rename-Item正确语法

PowerShell文件夹重命名:截取Basename前10位的正确实现

修正后的完整代码

$AllDir = Get-ChildItem -LiteralPath E:\ -Recurse -Directory | Where-Object { $_.FullName.Length -ge 95 }
# 先处理深层子目录,避免父目录重命名后路径失效
$AllDir = $AllDir | Sort-Object { $_.FullName.Length } -Descending

foreach($dir in $AllDir)
{
    if ($dir.BaseName.Length -ge 44) 
    {
        # 截取Basename前10位,两种写法效果一致,选更简洁的Substring
        $NewName2 = $dir.BaseName.Substring(0, 10)
        # $NewName2 = ($dir.BaseName[0..9] -join '') 

        # 核心:正确的Rename-Item语法
        # -LiteralPath 确保特殊字符路径被正确解析,-WhatIf 用于测试(可选)
        Rename-Item -LiteralPath $dir.FullName -NewName $NewName2 -WhatIf
    }
}

关键语法说明

  • 指定原路径:必须用$dir.FullName传入文件夹的完整路径,搭配-LiteralPath参数可以避免路径包含空格、方括号等特殊字符时的解析错误。
  • 设置新名称:-NewName只需要传入新的文件夹名称(不需要完整路径),PowerShell会自动在原父目录下完成重命名。
  • 截取字符的优化:Substring(0,10)比[0..9] -join ''更直观高效,两者都能得到前10位字符的结果。

实用注意事项

  • 测试阶段添加-WhatIf参数,不会实际修改文件夹,仅输出预期执行结果,确认无误后再移除该参数。
  • 如果目标目录存在同名文件夹,重命名会失败,可添加-Force参数强制覆盖,但需谨慎操作。
  • 递归遍历重命名时,先通过Sort-Object { $_.FullName.Length } -Descending处理深层子目录,避免父目录重命名后子目录路径失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:05:21