Dans ma quête pour améliorer mes compétences PowerShell, voici un exemple d'une solution laide à un problème simple. Toutes les suggestions pour améliorer l'oneliner sont les bienvenues.Filtrage et copie avec PowerShell
Mission: réduire une énorme bibliothèque d'icônes à quelque chose d'un peu plus gérable. La structure de répertoire d'origine ressemble à ceci:
/Apps and Utilities /Compile /32 Bit Alpha png /Compile 16 n p.png /+ 10 or more files /+ 5 more formats with 10 or more files each /+ 20 or so icon names /+ 22 more categories
Je veux copier les 32 bits Alpha PNGs et aplatir la structure du répertoire un peu. Voici ma solution rapide et très sale:
$dest = mkdir c:\icons; gci -r | ? { $_.Name -eq '32 Bit Alph a png' } | % { mkdir ("$dest\" + $_.Parent.Parent.Name + "\" + $_.Parent.Name); $_ } | gci | % { cp $_. FullName -dest ("$dest\" + $_.Directory.Parent.Parent + "\" + $_.Directory.Parent) }
Pas sympa, mais cela a résolu mon problème. Structure résultante:
/Apps and Utilities /Compile /Compile 16 n p.png /etc /etc /etc
Comment le feriez-vous?
Regardera dans le tri. Lorsque j'écris des scripts, je développe la plupart des alias, mais j'aime que mes oneliners soient concis - ls (ou dir) sont de bien meilleurs choix que gci si :). – Bergius