【问题标题】:Batch rename multiple files in multiple folders in PowerShell在 PowerShell 中批量重命名多个文件夹中的多个文件
【发布时间】:2020-04-06 03:33:25
【问题描述】:

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

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

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

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

主文件夹

  • 文件夹 1
    • 文件1
    • 文件2
  • 文件夹2
    • 文件1
    • 文件2

想要的输出:

主文件夹

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

【问题讨论】:

    标签: powershell rename


    【解决方案1】:

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

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

    【讨论】:

    • 注意添加-File 开关对我不起作用。我相信原因是我的文件夹中的文件类型可能未被 PowerShell 识别为文件(专有文件类型),因此它没有重命名我的文件。因此,我删除了 -File 开关,幸运的是我没有每个子文件夹。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-04-26
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 2019-07-23
      • 2011-07-14
      相关资源
      最近更新 更多