Powershell更改文件夹中一个子文件夹中的部分文件名(按文件夹名)

Powershell更改文件夹中一个子文件夹中的部分文件名(按文件夹名),powershell,Powershell,我想批量重命名按文件夹名称筛选的文件 我使用了以下代码 dir .\* -include "*Plantegninger*"-recurse| Rename-Item -NewName {$_.name -replace "-00K-","-00U-"} 在上面的代码中,我要替换的文件(名称的一部分)位于名为“Plantegninger”的子文件夹中 我想把-00K-换成-00U- 我在主文件夹的子文件夹中有许多同名子文件夹。因此,我

我想批量重命名按文件夹名称筛选的文件

我使用了以下代码

dir .\* -include "*Plantegninger*"-recurse| Rename-Item -NewName {$_.name -replace "-00K-","-00U-"}
在上面的代码中,我要替换的文件(名称的一部分)位于名为“Plantegninger”的子文件夹中 我想把-00K-换成-00U- 我在主文件夹的子文件夹中有许多同名子文件夹。因此,我尝试递归地做这件事。 但我相信这是按文件名过滤,而不是按子文件夹名过滤。 如何按子文件夹名称进行筛选,然后仅在该特定名称的子文件夹中更改文件名?
我还可以按子文件夹名称过滤,然后再按该子文件夹中的文件名过滤吗?

如果将操作分为两个不同的步骤,则更容易推断:

  • 枚举具有给定名称的所有子文件夹
  • 重命名每个子文件夹中的相关文件
  • #枚举相关子文件夹
    $subfolders=Get ChildItem-Filter'*Plantegninger*'-Directory-Recurse
    #重命名子文件夹中的文件
    $subfolders | Get ChildItem-File | Rename Item-NewName{$\ uu.Name-replace“-00K-”,“-00U-”}
    
    一旦它按预期工作,您就可以再次将语句组合到单个管道中(如果需要,我个人认为使用单独的语句更容易阅读):

    Get-ChildItem-Filter'*Plantegninger*'-目录-Recurse | Get-ChildItem-File |重命名Item-NewName{$\u.Name-replace“-00K-”,“-00U-”}
    
    是否仅重命名命名子文件夹下的文件,还是要递归到每个命名子文件夹的底部?