重命名子目录

时间:2018-03-06 11:41:04

标签: powershell

非常第一次使用PowerShell,并希望重命名在我的排名文件夹中以50到40开头的文件和目录

最初我试过这个

foreach($Directory in Get-ChildItem 'D:\Issues\' -Recurse -Directory)
{
    Rename-Item $Directory -NewName $($Directory.Name -replace "50","40")
}

但它也尝试使用文件夹,甚至尝试使用其中没有50的目录

我第二次尝试

Get-ChildItem -Recurse | Rename-Item {$_.FullName -replace '50','40'}

但是这个错误出现在

  

Rename-Item:找不到接受参数' $ _的位置参数.FullName -replace' 70'' 80''。在行:1 char:26

我真正想念的是什么?

我已尝试使用另外两个命令,它实际上有效,但会带来红色错误

For Files

foreach($File in Get-ChildItem 'D:\Issues\' -Recurse -file)
{
    Rename-Item $file -NewName $($_.Name -replace "50","40")
}

错误

  

Rename-Item:无法将参数绑定到参数' NewName'因为它是一个空字符串。在行:3 char:32

对于目录

foreach($Directory in Get-ChildItem 'D:\Issues\' -Recurse -Directory)
{
    Rename-Item $Directory -NewName $($Directory.Name -replace "50","40")
}

1 个答案:

答案 0 :(得分:1)

您需要过滤Get-ChildItem以仅返回您要重命名的项目。这可以使用Include param:

来完成
Get-ChildItem D:\Issues -Include 50* -Recurse | Rename-Item -NewName {$_.Name -replace '50','40'}