我想自动更改某些文件的名称。
使用此代码我将小写字母更改为大写:
get-childitem * .mp3 | foreach {if($ .Name -cne $ .Name.ToUpper()){ ren $ .FullName $ .Name.ToUpper()}}
但我只希望每个单词的第一个字母都是大写的。
答案 0 :(得分:35)
您可以使用ToTitleCaseMethod:
$TextInfo = (Get-Culture).TextInfo
$TextInfo.ToTitleCase("one two three")
输出
一二三
$TextInfo = (Get-Culture).TextInfo
get-childitem *.mp3 | foreach { $NewName = $TextInfo.ToTitleCase($_); ren $_.FullName $NewName }
答案 1 :(得分:4)
是的,它已经融入了Get-Culture。
gci *.mp3|%{
$NewName = (Get-Culture).TextInfo.ToTitleCase($_.Name)
$NewFullName = join-path $_.directory -child $NewName
$_.MoveTo($NewFullName)
}
是的,它可以缩短为一行,但它会变得很长并且难以阅读。
答案 2 :(得分:1)
我的答案非常相似,但是我想提供一种解决方案。这也将在强制标题大小写之前将文本强制转换为小写。 (否则,只有第一个字母有效)
$text = 'one TWO thrEE'
( Get-Culture ).TextInfo.ToTitleCase( $text.ToLower() )
输出:
一二三
答案 3 :(得分:1)
你去了
[cultureinfo]::GetCultureInfo("en-US").TextInfo.ToTitleCase("what is my name?")