问题
I want to change the names of some files automatically.
With this code I change the lowercase letters to uppercase:
get-childitem *.mp3 | foreach { if ($.Name -cne $.Name.ToUpper()) { ren $.FullName $.Name.ToUpper() } }
But I only want the first letter of each word to be uppercase.
回答1:
You can use ToTitleCase Method:
$TextInfo = (Get-Culture).TextInfo
$TextInfo.ToTitleCase("one two three")
outputs
One Two Three
$TextInfo = (Get-Culture).TextInfo
get-childitem *.mp3 | foreach { $NewName = $TextInfo.ToTitleCase($_); ren $_.FullName $NewName }
回答2:
Yup, it's built into Get-Culture.
gci *.mp3|%{
$NewName = (Get-Culture).TextInfo.ToTitleCase($_.Name)
$NewFullName = join-path $_.directory -child $NewName
$_.MoveTo($NewFullName)
}
Yeah, it could be shortened to one line, but it gets really long and is harder to read.
来源:https://stackoverflow.com/questions/22694582/capitalize-the-first-letter-of-each-word-in-a-filename-with-powershell