2009-04-27 8 views
17

J'ai une simple commande Bash pour redimensionner certaines images automatiquement sur un site web à faible trafic en utilisant ImageMagick - Je voudrais convertir cela en une commande PowerShell afin de ne pas avoir à installer Cygwin sur mon serveur web. Quelqu'un peut-il prêter ses compétences PSh ici?Convertir la commande Bash xargs en PowerShell?

ls | xargs -I {} rconvert "{}" -resize 128x128\> "{}" 

Répondre

26

Votre meilleur pari est de diriger la sortie de ls à l'commandlet foreach-objet comme celui-ci (% est un alias pour foreach-objet):

ls | %{rconvert $_ -resize 128x128} 

Edit: ls génère une liste de Objets FileInfo ou DirectoryInfo sur le pipeline. Pour filtrer les objets DirectoryInfo, utilisez le filtre où-objet (? Est alias):

ls | ?{-not $_.PSIsContainer} | %{rconvert $_ -resize 128x128} 

Si vous avez besoin d'accéder au chemin d'accès complet dans votre commande, utilisez la propriété FullName de l'objet FileInfo ($ _ par lui-même sera réglé à $ _ Nom qui est juste le nom de fichier):..

ls | ?{-not $_.PSIsContainer} | %{rconvert $_.FullName -resize 128x128} 
+0

Je pense que vous devriez changer $ _ à $ _ FullName – BeWarned

+1

vous avez probablement raison, c'est plus robuste, mais la commande est étant exécuté à partir du répertoire de travail actuel, il devrait donc fonctionner. – zdan

+0

Vous avez un "{" supplémentaire dans la deuxième et la troisième commande qui doit être supprimée (avant le "%"). – JasonMArcher

Questions connexes