将多个文件名中每个单词的首字母大写 (Powershell)

Capitalize First Letter Of Each Word In Multiple Filenames (Powershell)

我有很多文件夹,每个文件夹中有很多文件,我想批量将每个单词的首字母大写。我已经看到了将字符串大写的解决方案,但这不是我所追求的。我使用 Powershell,我喜欢将脚本复制到活动文件夹中,然后 运行 就可以了。因此,我的大多数 PS 脚本都以:

开头

$PSScriptRoot

重命名文件示例:

$PSScriptRoot
Get-ChildItem -File | Rename-Item -NewName { $_.Name -Replace "OLD","NEW"}

所以只是寻找类似的东西,将所有文件名中每个单词的首字母大写(当然不包括扩展名)。

是这样的吗?

Get-ChildItem -File | Rename-Item -NewName { "{0}{1}" -f ( Get-Culture ).TextInfo.ToTitleCase( $_.BaseName.ToLower() ), $_.Extension}

为了获得更好的性能,您可以只重命名具有不同名称的文件,如下所示:

Get-ChildItem -File | select *, @{N="NewName";E={"{0}{1}" -f ( Get-Culture ).TextInfo.ToTitleCase( $_.BaseName.ToLower() ), $_.Extension}} | 
where {$_.Name -CNE $_.NewName} | Rename-Item -NewName {$_.NewName}