使用powershell将文件名中每个单词的首字母大写

时间:2014-03-27 17:12:02

标签: powershell cmd uppercase lowercase

我想自动更改某些文件的名称。

使用此代码我将小写字母更改为大写:

  

get-childitem * .mp3 | foreach {if($ .Name -cne $ .Name.ToUpper()){   ren $ .FullName $ .Name.ToUpper()}}

但我只希望每个单词的第一个字母都是大写的。

4 个答案:

答案 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?")