重命名子目录

问题描述 投票:0回答:1

第一个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

我到底错过了什么?

我已经尝试了2个以上的命令,它实际上有效,但会带来红色错误

对于文件

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")
}
powershell
1个回答
1
投票

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

Get-ChildItem D:\Issues -Include 50* -Recurse | Rename-Item -NewName {$_.Name -replace '50','40'}
© www.soinside.com 2019 - 2024. All rights reserved.