2009-04-27 12 views
17

Ho un semplice comando Bash per ridimensionare automaticamente alcune immagini su un sito Web a basso traffico utilizzando ImageMagick - Mi piacerebbe convertirlo in un comando di PowerShell, quindi non devo installare Cygwin sul mio server web. Qualcuno può prestare le sue abilità PSh qui?Converti il ​​comando xargs Bash in PowerShell?

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

risposta

26

La cosa migliore è quella di inviare l'output di ls al commandlet foreach-oggetto come questo (% è un alias per foreach-oggetto):

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

Edit: ls emette un elenco di FileInfo o DirectoryInfo oggetti sulla pipeline. Per filtrare gli oggetti DirectoryInfo, utilizzare il filtro in cui-oggetto (? È alias):

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

Se avete bisogno di accedere il percorso completo nel comando, utilizzare la proprietà FullName dell'oggetto FileInfo ($ _ di per sé sarà risolto a $ _ nome che è solo il nome del file):..

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

Penso che si dovrebbe cambiare $ _ a $ _ FullName – BeWarned

+1

probabilmente hai ragione, che è più robusto, ma il comando è essere eseguito dalla directory di lavoro corrente, quindi dovrebbe funzionare. – zdan

+0

Hai un "{" extra nel secondo e nel terzo comando che devono essere rimossi (prima di "%"). – JasonMArcher