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

使用PowerShell批量重命名TXT文件:仅保留文件名中的ID

PowerShell批量提取TXT文件名中[]内ID并重命名

先做安全测试(必看!)

新手第一步一定要先测试,别直接改文件。运行下面的命令,只会输出拟重命名的文件列表和预期新名称,不会实际修改:

Get-ChildItem -Path "你的目标文件夹路径" -Recurse -Filter "*.txt" | ForEach-Object {
    if ($_.BaseName -match '\[(.*?)\]') {
        $newName = "$($matches[1]).txt"
        Write-Host "原路径: $($_.FullName) → 新文件名: $newName"
    } else {
        Write-Host "跳过(无ID格式): $($_.FullName)"
    }
}

把你的目标文件夹路径替换成实际路径,比如D:\MyBigFolder。

执行实际重命名

确认测试结果完全符合预期后,再用下面的命令操作。注意先保留-WhatIf预览,没问题再删掉它:

Get-ChildItem -Path "你的目标文件夹路径" -Recurse -Filter "*.txt" | ForEach-Object {
    if ($_.BaseName -match '\[(.*?)\]') {
        $newFullPath = Join-Path -Path $_.DirectoryName -ChildPath "$($matches[1]).txt"
        # 检查是否已有同名文件,避免覆盖
        if (-not (Test-Path -Path $newFullPath)) {
            Rename-Item -Path $_.FullName -NewName $newFullPath -WhatIf
            # 预览正确后,删除上面的 -WhatIf 再执行真实重命名
        } else {
            Write-Warning "已存在同名文件,跳过: $($_.FullName)"
        }
    } else {
        Write-Host "无匹配ID,跳过: $($_.FullName)"
    }
}

几个重要细节

  • -Recurse参数会自动遍历所有子文件夹里的TXT文件
  • 正则\[(.*?)\]是非贪婪匹配,只会提取第一对[]里的内容(如果文件名有多个[]的话)
  • 用Join-Path拼接完整路径,保证重命名后的文件还在原文件夹里
  • 内置了重复文件名检测,不会不小心覆盖已有文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:19:58