如何使用PowerShell或CMD批量重命名多文件夹中的唯一TGA文件为统一名称
如何使用PowerShell或CMD批量重命名多文件夹中的唯一TGA文件为统一名称
没问题,这种批量重命名的需求用PowerShell或者CMD都能轻松搞定,毕竟手动改上千个文件夹实在太折磨人了。我给你两种方案,你根据自己的习惯选就行:
PowerShell方案
PowerShell的灵活性更高,还能帮你做简单的校验,避免误操作:
- 打开PowerShell(直接在开始菜单搜索“PowerShell”即可)
- 复制下面的命令,替换成你的实际路径和目标文件名:
# 替换为你的父文件夹路径,比如Z:\ClientWork $parentPath = "Z:\ClientWork" # 替换为你想要的统一文件名 $newFileName = "bob.tga" # 遍历父文件夹下的所有子文件夹 Get-ChildItem -Path $parentPath -Directory | ForEach-Object { # 在当前子文件夹里找所有TGA文件 $tgaFile = Get-ChildItem -Path $_.FullName -Filter "*.tga" -File # 确保每个文件夹里只有一个TGA文件(符合你的场景) if ($tgaFile.Count -eq 1) { # 执行重命名,-WhatIf是预览模式,不会实际修改文件 Rename-Item -Path $tgaFile.FullName -NewName $newFileName -WhatIf } }
- 先运行带
-WhatIf的命令,看看输出的重命名计划是不是符合你的预期,确认没问题后,去掉-WhatIf再执行一次就完成了。
如果遇到某个文件夹已经存在同名文件(比如已经有bob.tga),想强制覆盖的话,可以在Rename-Item后面加上-Force参数。
CMD方案
如果你更习惯用命令提示符,这个简单的脚本也能完成任务:
- 打开命令提示符(开始菜单搜索“CMD”即可)
- 复制下面的命令,替换路径和目标文件名:
@echo off :: 替换为你的父文件夹路径 set "parentPath=Z:\ClientWork" :: 替换为你想要的统一文件名 set "newFileName=bob.tga" :: 遍历父文件夹下的所有子目录 for /d %%d in ("%parentPath%\*") do ( :: 重命名该目录下的TGA文件(每个目录只有一个,所以直接用通配符) ren "%%d\*.tga" "%newFileName%" )
- 运行这个脚本就会自动处理所有子文件夹里的TGA文件。如果遇到同名文件需要自动覆盖,把
ren那一行改成ren "%%d\*.tga" "%newFileName%" /y就行(/y参数会跳过确认直接覆盖)。
小提醒
不管用哪种方法,建议先找几个测试文件夹跑一遍,确认效果后再批量处理所有文件夹,避免意外修改错误的文件哦。
备注:内容来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

