web-dev-qa-db-fra.com

Mettre en majuscule la première lettre de chaque mot dans un nom de fichier avec PowerShell

Je souhaite modifier automatiquement les noms de certains fichiers.

Avec ce code, je change les lettres minuscules en majuscules:

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

Mais je veux seulement que la première lettre de chaque mot soit en majuscule.

17
Gilko

Vous pouvez utiliser ToTitleCase Méthode:

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

les sorties

Un deux trois

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

Oui, il est intégré à Get-Culture.

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

Oui, cela pourrait être raccourci en une seule ligne, mais cela devient très long et plus difficile à lire.

4
TheMadTechnician