Maiuscola la prima lettera di ogni parola in un nome di file con powershell

Voglio cambiare i nomi di alcuni file automaticamente.

Con questo codice posso cambiare le lettere minuscole in maiuscole:

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

Ma io voglio solo la prima lettera di ogni parola in maiuscolo.

InformationsquelleAutor Gilko | 2014-03-27

 

2 Replies
  1. 39

    È possibile utilizzare ToTitleCaseMethod:

    $TextInfo = (Get-Culture).TextInfo
    $TextInfo.ToTitleCase("one two three")

    uscite

    Uno Due Tre

    $TextInfo = (Get-Culture).TextInfo
    get-childitem *.mp3 | foreach { $NewName = $TextInfo.ToTitleCase($_); ren $_.FullName $NewName }
  2. 4

    Yup, è costruito in una Cultura.

    gci *.mp3|%{
        $NewName = (Get-Culture).TextInfo.ToTitleCase($_.Name)
        $NewFullName = join-path $_.directory -child $NewName
        $_.MoveTo($NewFullName)
    }

    Sì, potrebbe essere ridotto a una sola riga, ma diventa davvero lungo ed è più difficile da leggere.

Lascia un commento