PowerShell : Foreach-Object avec l'alphabet

Il n'est pas rare que nous utilisions la fonction foreach-object pour afficher des nombres séquentiellements sur PowerShell en exécutant "1..10 | foreach-object{$_}".


Donc si on veut faire la même chose avec les lettres, on devrait faire ceci : "a..z | foreach-object{$_}"

Comme on peut le voir, on n'obtient pas ce que l'on veut. L'alternative est donc d'utiliser la table ASCII puis la reconvertir avec la balise [char] convertir le nombre en alphabet.
"65..90 | foreach-object{[char]$_}" Pour générer la liste de  A à Z en majuscule.
"97..122 | foreach-object{[char]$_}"Pour générer la liste de  A à Z en minuscule.
Maintenant dans la pratique si l'on veut créer 26 sous-dossiers qui correspondra à une lettre peut utiliser cette commande:

97..122 | ForEach-Object{new-item -type directory -path $([char]$_)}


Ici, avec la même méthode, on peut rechercher puis déplacer copier les fichiers dans chacun des dossiers qui ont été précédemment créés.

 97..122 | ForEach-Object{Get-ChildItem | Where-Object name -like $([char]$_ + '*.gbc') | move-item -Destination $('.\'+[char]$_) -force}

Cela fonctionne parfaitement. Comme l'exemple le prouve on peut l'appliquer pour travailler avec d'autres cmdlets.

Commentaires

Posts les plus consultés de ce blog

Powershell - Supprimer Teams sur l'ensemble des profils utilisateurs

Powershell - Comment tester les ports TCP ?

MRemoteNG - Voir les mots de passe dans l'application