在PowerShell中批量重命名多个文件夹中的多个文件

时间:2019-12-12 17:15:42

标签: powershell rename

我想批量重命名多个目录中的文件(20个目录,每个目录20个文件),并且我希望每个文件都获得其文件夹名称的前缀。

我可以使用以下代码对单个目录执行此操作:

dir | Rename-Item -NewName {$_.Directory.Name + "_" + $_.Name}

但是如何将其应用于其中的所有文件夹和文件?

主文件夹

  • 文件夹1
    • file1
    • file2
  • 文件夹2
    • file1
    • file2

所需的输出:

主文件夹

  • 文件夹1
    • folder1_file1
    • folder1_file2
  • 文件夹2
    • folder2_file1
    • folder2_file2

2 个答案:

答案 0 :(得分:1)

我认为您可以简单地通过目录将-Recurse添加到Recurse(也感谢@infosecb指出还添加-File开关仅重命名文件,而不是目录):

Get-ChildItem * -File -Recurse | Rename-Item -NewName {$_.Directory.Name + "_" + $_.Name}

答案 1 :(得分:0)

除了HAL9256的建议外,您还应该在Get-ChildItem cmdlet中包括-File开关以仅选择文件。