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

编写PowerShell脚本:按文本列表批量重命名指定文件夹文件

PowerShell脚本实现批量按列表重命名文件

没问题,我来帮你写这个PowerShell脚本,完美匹配你的需求——从文本文件读文件名列表,按顺序给目标文件夹里的文件重命名。

先直接上完整脚本,你可以直接用,后面我会拆解每部分的作用:

# 配置参数,你需要修改这几个路径
$nameListPath = "C:\path\to\your\filename-list.txt"  # 存文件名列表的文本文件
$targetFolder = "C:\path\to\your\files-to-rename"    # 待重命名文件所在的文件夹

# 读取文件名列表,跳过空行
$newNames = Get-Content -Path $nameListPath | Where-Object { $_ -notmatch '^\s*$' }

# 获取目标文件夹里的文件,这里默认按创建时间排序,你可以根据需要改排序规则
$filesToRename = Get-ChildItem -Path $targetFolder -File | Sort-Object CreationTime

# 检查文件名数量和文件数量是否匹配
if ($newNames.Count -ne $filesToRename.Count) {
    Write-Error "错误:文件名列表的行数($($newNames.Count))和目标文件夹的文件数($($filesToRename.Count))不匹配!"
    exit 1
}

# 循环批量重命名
for ($i = 0; $i -lt $filesToRename.Count; $i++) {
    $oldFile = $filesToRename[$i]
    $newName = $newNames[$i]

    # 如果新名称不带扩展名,保留原文件的扩展名
    if (-not [System.IO.Path]::HasExtension($newName)) {
        $newName = [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($oldFile.FullName), 
                                            "$newName$($oldFile.Extension)")
    } else {
        $newName = [System.IO.Path]::Combine($targetFolder, $newName)
    }

    # 检查新文件名是否已存在,避免覆盖
    if (Test-Path -Path $newName) {
        Write-Warning "警告:文件 $newName 已存在,跳过重命名 $($oldFile.Name)"
        continue
    }

    # 执行重命名
    Rename-Item -Path $oldFile.FullName -NewName $newName -ErrorAction Stop
    Write-Host "已重命名:$($oldFile.Name) → $([System.IO.Path]::GetFileName($newName))"
}

Write-Host "所有匹配的文件重命名完成!"

关键细节说明:

  • 参数配置:开头的$nameListPath和$targetFolder是你需要手动修改的路径,直接替换成你自己的文件和文件夹路径就行。
  • 跳过空行:脚本会自动忽略文件名列表里的空行,避免因为误输入的空行导致重命名出错。
  • 文件排序规则:默认按文件的创建时间排序来匹配列表顺序,如果你的需求是按其他顺序(比如文件名、修改时间),可以把Sort-Object CreationTime改成Sort-Object Name或者Sort-Object LastWriteTime。
  • 扩展名处理:如果你的文件名列表里不带扩展名,脚本会自动保留原文件的扩展名;如果列表里已经带了扩展名,就直接用列表里的名称。
  • 防覆盖检查:如果目标文件夹里已经有和新名称重复的文件,脚本会跳过这个文件并给出警告,不会直接覆盖。
  • 错误处理:如果文件名数量和文件数量不匹配,脚本会直接报错退出,避免部分重命名导致混乱。

使用注意事项:

  1. 先备份待重命名的文件!虽然脚本有防覆盖,但建议先复制一份文件到测试文件夹,测试没问题再用在正式文件上。
  2. 文件名列表里的每行就是一个新文件名,不要加引号或者其他多余符号。
  3. 如果你的文件名里有特殊字符(比如空格、中文),脚本完全支持,不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:10:07