我想批量重命名多个目录中的文件(20个目录,每个目录20个文件),并且我希望每个文件都获得其文件夹名称的前缀。
我可以使用以下代码对单个目录执行此操作:
dir | Rename-Item -NewName {$_.Directory.Name + "_" + $_.Name}
但是如何将其应用于其中的所有文件夹和文件?
主文件夹
所需的输出:
主文件夹
答案 0 :(得分:1)
我认为您可以简单地通过目录将-Recurse
添加到Recurse(也感谢@infosecb指出还添加-File
开关仅重命名文件,而不是目录):
Get-ChildItem * -File -Recurse | Rename-Item -NewName {$_.Directory.Name + "_" + $_.Name}
答案 1 :(得分:0)
除了HAL9256的建议外,您还应该在Get-ChildItem cmdlet中包括-File
开关以仅选择文件。