如何为目录及子目录内所有文件添加所属根文件夹名称前缀
批量为顶层目录下所有文件添加目录名前缀的实现方案
适用于将同级的多个顶层目录(如1-0、1-1)的名称作为前缀,批量添加到该目录下所有层级子文件的文件名前,无需逐个目录操作。
方案1:Windows 自带PowerShell方案(无需额外安装软件)
系统原生支持,不需要下载第三方工具:
- 先把所有顶层目录(1-0、1-1这类文件夹)统一放在同一个父文件夹中,例如存放在
D:\批量处理\路径下 - 打开该父文件夹,在地址栏直接输入
powershell按回车,即可打开对应路径的PowerShell窗口 - 先执行预览命令,不会实际修改文件,确认重命名规则是否正确:
Get-ChildItem -Directory | ForEach-Object { $prefix = $_.Name Get-ChildItem $_.FullName -File -Recurse | ForEach-Object { $newName = $prefix + $_.Name Write-Host "待修改:$($_.FullName) -> $newName" } }
- 确认预览结果符合预期后,执行实际重命名命令:
Get-ChildItem -Directory | ForEach-Object { $prefix = $_.Name Get-ChildItem $_.FullName -File -Recurse | ForEach-Object { $newName = $prefix + $_.Name Rename-Item -Path $_.FullName -NewName $newName } }
注意:执行操作前建议先备份所有文件,避免误操作导致数据丢失;顶层目录名包含空格也可正常识别。
方案2:Python 跨平台方案(Windows/macOS/Linux 通用)
适合有Python环境的用户,全平台通用:
- 把所有顶层目录统一放在同一个父文件夹中
- 在该父文件夹内新建文本文档,重命名为
rename_prefix.py,粘贴以下代码:
import os # 这里默认用脚本所在的文件夹作为父目录,也可手动替换为绝对路径,例如 r"C:\Users\xxx\Desktop\批量处理" parent_dir = os.path.dirname(os.path.abspath(__file__)) for top_folder in os.listdir(parent_dir): top_path = os.path.join(parent_dir, top_folder) if not os.path.isdir(top_path): continue prefix = top_folder # 递归遍历所有层级的子文件 for root, dirs, files in os.walk(top_path): for file in files: old_path = os.path.join(root, file) new_name = prefix + file new_path = os.path.join(root, new_name) # 首次执行先预览,确认没问题再注释掉print、取消os.rename的注释 print(f"待修改:{old_path} -> {new_path}") # os.rename(old_path, new_path)
- 在父文件夹的终端中执行
python rename_prefix.py,确认打印的预览结果符合需求后,注释掉print语句、取消os.rename行的注释,再次执行命令即可完成批量重命名。
内容的提问来源于stack exchange,提问作者Ross
相关产品推荐
相关产品推荐

