嗨,我需要更改特定单词的大小写
示例:
应该是这样的:
我已经尝试过了:
get-childitem -recurse | rename-item -newname { $_.name -replace "PAIN","Pain" }
get-childitem -recurse | rename-item -newname { $_.name -replace "SCAR","Scar" }
get-childitem -recurse | rename-item -newname { $_.name -replace "DERMATITIS","Dermatitis" }
现在的问题是,无论如何,我可以将其合并为一个代码吗?对于其他文件名,最后的单词并不总是2个或更多。
谢谢。
答案 0 :(得分:0)
您似乎需要使用TitleCase
重命名文件。请注意,转换为TitleCase
不适用于所有鞋面。因此,我们将需要输入字符串ToLower()
:
Get-ChildItem -Path "C:\Path" -Recurse | Rename-Item -NewName {$_.Name -replace "$($_.Name)", "$((Get-Culture).TextInfo.ToTitleCase($_.Name.ToLower()))"}
另一个说明,这也会将“ RX PPLLC”也更改为TitleCase
。如果您需要忽略它,则可能需要使用substring
来解决它。
更新:-如果要保留“ RX PPLLC”:
Get-ChildItem -Path "C:\Test" -Recurse | Rename-Item -NewName {
$lefSide = $_.Name.Substring(0,$_.Name.IndexOf('-'))
$rightSide = $_.Name.Substring($_.Name.IndexOf('-') + 1)
$rightSide = $((Get-Culture).TextInfo.ToTitleCase($rightSide.ToLower()))
$newName = $leftSide + $rightSide
$_.Name -replace "$($_.Name)", "$newName"
}
有很多更好的方法可以做到这一点。基本上,这会将文件名分成两个字符串(左侧和右侧)。它将更改权限,然后将其放回名为$newName
的变量中。仅当您的文件名包含-
时,此方法才有效。如果您想处理这些情况,则需要一个条件或regEx ...这只是一个简单的示例