如何在R语言中批量替换本地PDF文件的旧文件名?
批量替换本地PDF文件名的方法
假设你已经将旧文件名与新文件名的对应关系整理成了映射表,以下是几种高效的批量重命名方案:
前提准备
先把旧文件名和新文件名的对应关系存成CSV格式文件(命名为rename_map.csv),每行格式为旧文件名,新文件名,示例如下:
(P102180.R2858.M60102148)SupplierPerformanceDashboard.PDF,60102148.PDF (P10424.R2858.M60010424)SupplierPerformanceDashboard.PDF,60010424.PDF (P14479.R2858.M60004820)SupplierPerformanceDashboard.PDF,60004820.PDF
将这个CSV文件和所有待重命名的PDF放在同一个文件夹下。
方案1:Python脚本
适合有Python环境的用户,灵活性高:
- 在文件夹内创建
rename_files.py脚本,内容如下:
import os import csv # 读取映射表 with open('rename_map.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) # 如果CSV有表头,取消下面一行的注释跳过表头 # next(reader) for old_name, new_name in reader: if os.path.exists(old_name): os.rename(old_name, new_name) print(f"已重命名:{old_name} → {new_name}") else: print(f"文件不存在:{old_name}")
- 打开命令行进入该文件夹,执行命令:
python rename_files.py
方案2:Windows PowerShell脚本
无需额外安装工具,Windows系统自带:
- 在文件夹内创建
rename_files.ps1脚本:
# 读取CSV映射表 $renameMap = Import-Csv -Path ".\rename_map.csv" -Header "OldName", "NewName" foreach ($item in $renameMap) { $oldPath = Join-Path -Path $PWD.Path -ChildPath $item.OldName $newPath = Join-Path -Path $PWD.Path -ChildPath $item.NewName if (Test-Path $oldPath) { Rename-Item -Path $oldPath -NewName $item.NewName Write-Host "已重命名:$($item.OldName) → $($item.NewName)" } else { Write-Host "文件不存在:$($item.OldName)" } }
- 右键以管理员身份打开PowerShell,进入文件夹后执行:
.\rename_files.ps1
方案3:Windows批处理脚本
适合习惯用批处理的用户:
- 将映射表保存为
rename_list.txt,每行格式为旧文件名 新文件名(文件名不含空格时适用):
(P102180.R2858.M60102148)SupplierPerformanceDashboard.PDF 60102148.PDF (P10424.R2858.M60010424)SupplierPerformanceDashboard.PDF 60010424.PDF
- 创建
rename.bat脚本:
@echo off setlocal enabledelayedexpansion for /f "tokens=*" %%i in (rename_list.txt) do ( set "line=%%i" for /f "tokens=1,*" %%a in ("!line!") do ( if exist "%%a" ( ren "%%a" "%%b" echo 已重命名:%%a → %%b ) else ( echo 文件不存在:%%a ) ) ) pause
- 双击运行
rename.bat即可
内容的提问来源于stack exchange,提问作者Jaskeil
相关产品推荐
相关产品推荐

