使用Powershell重命名当前目录中包含文件和子目录的所有文件夹名称

使用Powershell重命名当前目录中包含文件和子目录的所有文件夹名称,powershell,Powershell,我有一组文件夹,如下所示,其中有文件和子文件夹,我想重命名 所有smv2103*文件夹到smv2106*文件夹,使用Powershell保持其中的文件和子文件夹完好无损 E:\online\smv2103pdf E:\online\smv2103mac E:\online\smv2103frp E:\online\smv2103rep E:\online\smv2103soc E:\online\smv2103bid E:\online\smv2103rem E:\online\smv2103n

我有一组文件夹,如下所示,其中有文件和子文件夹,我想重命名 所有smv2103*文件夹到smv2106*文件夹,使用Powershell保持其中的文件和子文件夹完好无损

E:\online\smv2103pdf
E:\online\smv2103mac
E:\online\smv2103frp
E:\online\smv2103rep
E:\online\smv2103soc
E:\online\smv2103bid
E:\online\smv2103rem
E:\online\smv2103nop
E:\online\smv2103gac
E:\online\smv2103pam
任何帮助都将不胜感激,因为重命名项本身无法工作,因为其中包含文件和子文件夹

Get-ChildItem "E:\online\*"  -Directory| 
 Where{  ( $_.Name -like "*2103*") } |
 ForEach-Object{
        ((Get-Content $_.FullName -Raw) -replace "2103","2106") | Set-Content -Path $_.FullName
      }

所以你只想重命名文件夹?您可以使用
Get Content
从文件中获取内容。要筛选特定条件,
Get ChildItem
有一个可以使用的
-filter
参数

  • Get ChildItem-过滤器“*2013*”
在powershell中进行过滤时,最好的做法是尽可能向左过滤。现在,知道您只是想重命名文件夹本身,我们可以删除
Get Content
,并将信息传输到
rename Item

Get-ChildItem -Path "E:\online*" -Filter "*2013*" -Directory | 
    ForEach-Object {
        Rename-Item -Path $_.FullName -NewName $_.Name.Replace('2013','2016') 
    }

什么意思
重命名项
不起作用?为什么?你能给我们看一下你的代码吗?Get-ChildItem“E:\online*”-目录{($..Name-像“2103”)}ForEach对象{((Get-Content$..FullName-Raw)-替换“2103”,“2106”)|设置内容-路径$..FullName}非常感谢你,现在有意义了,我已经过度复杂了。很有效,谢谢你的帮助