You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PowerShell批量重命名:如何利用Split分割结果实现文件重命名

PowerShell批量重命名:如何利用Split分割结果实现文件重命名

嗨,你已经完成了最关键的一步——成功提取出了想要的新文件名格式!现在只需要把输出新名称的步骤换成实际的重命名命令就搞定啦,我来帮你调整代码:

首先,你原来用Get-ChildItem -Name拿到的只是文件名的字符串,其实直接用Get-ChildItem(不带-Name)会更方便,因为它返回的是文件对象,能直接获取文件的完整路径,避免路径相关的问题。

修改后的核心代码如下:

Get-ChildItem | foreach {
    # 分割当前文件的文件名(注意用$_.Name而不是$_,因为$_现在是文件对象)
    $stringParts = $_.Name.split(" _ ")
    # 拼接你想要的新文件名
    $newName = $stringParts[0] + " _ " + $stringParts[2]
    # 执行重命名:$_.FullName是原文件的完整路径,$newName是新名称
    Rename-Item -Path $_.FullName -NewName $newName
}

几个实用的小提示:

  • 先测试再执行:在Rename-Item后面加上-WhatIf参数,比如Rename-Item -Path $_.FullName -NewName $newName -WhatIf,这样不会实际修改文件名,只会在控制台显示要执行的重命名操作,确认所有新名称都符合预期后,再去掉-WhatIf真正执行。
  • 避免格式错误报错:如果有些文件名不符合[内容] _ [内容] _ [内容]的格式,分割后可能没有索引为2的元素,这时会报错。可以加个判断,跳过格式不对的文件:
    Get-ChildItem | foreach {
        $stringParts = $_.Name.split(" _ ")
        if ($stringParts.Count -ge 3) {
            $newName = $stringParts[0] + " _ " + $stringParts[2]
            Rename-Item -Path $_.FullName -NewName $newName -WhatIf
        } else {
            Write-Warning "文件 '$($_.Name)' 格式不符合要求,跳过重命名"
        }
    }
    
  • 处理子文件夹文件:如果需要递归处理子文件夹里的文件,只需要给Get-ChildItem加上-Recurse参数即可。

这样你就能顺利批量重命名文件啦!

备注:内容来源于stack exchange,提问作者KoKee

火山引擎 最新活动