Заглавийте первую букву каждого слова в имени файла с помощью powershell
Я хочу изменить имена некоторых файлов автоматически.
С помощью этого кода я меняю строчные буквы на верхний регистр:
get-childitem *.mp3 | foreach {if ($.Name -cne $.Name.ToUpper()) { ren $.FullName $.Name.ToUpper()}}
Но я хочу, чтобы первая буква каждого слова была прописной.
Ответы
Ответ 1
Вы можете использовать ToTitleCaseMethod:
$TextInfo = (Get-Culture).TextInfo
$TextInfo.ToTitleCase("one two three")
выходы
Один Два Три
$TextInfo = (Get-Culture).TextInfo
get-childitem *.mp3 | foreach { $NewName = $TextInfo.ToTitleCase($_); ren $_.FullName $NewName }
Ответ 2
Yup, он встроен в Get-Culture.
gci *.mp3|%{
$NewName = (Get-Culture).TextInfo.ToTitleCase($_.Name)
$NewFullName = join-path $_.directory -child $NewName
$_.MoveTo($NewFullName)
}
Да, он может быть сокращен до одной строки, но он становится очень длинным и труднее читать.