我目前使用Filebot处理我个人翻录/下载的电影的初始命名。当它标识带有蓝光源的电影时,它会标记该电影:

Movie Title (Year) (BluRay)

我想要一个区分大小写的Powershell脚本,将“BluRay”重命名为“Bluray”。我当前的脚本如下:
Dir | Rename-Item –NewName { $_.name –replace "BluRay","Blu" } >$null 2>&1
Dir | Rename-Item –NewName { $_.name –replace "Blu","Bluray" } >$null 2>&1

这很有效,除了我不希望它遍历并重命名每个文件夹(因为我使用基于修改日期的备份/同步软件),因为它不区分大小写以及对某些电影进行错误标记,例如:
Deep Blue Sea (1999) (Bluray)

因此,如果我可以区分大小写(首选方法)或排除蓝色一词,那应该是有效的。

最佳答案

它可能区分大小写,您只需要使用正确的运算符即可。大多数比较运算符具有区分大小写的变体,例如-ceq,-clike,-creplace等。添加Where-Object可以使其成为目标并仅更改您需要的对象:

Dir | Where-Object Name -cmatch 'BluRay' | Rename-Item –NewName { $_.name –creplace "BluRay","Blu" } >$null 2>&1

或者,由于某种原因,如果您还需要捕获小写b,则:
Dir | Where-Object Name -cmatch '[bB]luRay' | ForEach-Object {
    $Item = Rename-Item $_.FullName -NewName ($_.Name –replace "BluRay","Blu") -PassThru
    $null = Rename-Item $Item.FullName -NewName ($Item.Name -replace 'Blu', 'Bluray')
}

克里斯

关于windows - Powershell区分大小写的重命名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38800790/

10-16 22:07