2009-04-27 10 views
17

Mam proste polecenie Bash, aby automatycznie zmienić rozmiar niektórych obrazów w witrynie o małym natężeniu ruchu za pomocą ImageMagick - Chciałbym przekonwertować to na polecenie PowerShell, więc nie muszę instalować Cygwin na moim serwerze internetowym. Czy ktoś może pożyczyć swoje umiejętności PSh tutaj?Konwertuj polecenie Xargs Bash na PowerShell?

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

Odpowiedz

26

Najprościej jest do rury wyjście ls do commandlet foreach-obiektowego tak (% jest aliasem dla foreach-object):

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

Edit: ls wyświetla listę Obiekty FileInfo lub DirectoryInfo na potoku. Aby odfiltrować obiektów DirectoryInfo, użyć filtru gdzie-Object (? Jest alias):

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

Jeżeli chcesz mieć dostęp do pełnej nazwy ścieżki w poleceniu, należy użyć właściwości FullName obiektu FileInfo ($ _ sama zostanie rozwiązany do $ _ Nazwa który jest tylko nazwa pliku):..

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

myślę, że należy zmienić $ _ do $ _ FullName – BeWarned

+1

pewnie masz rację, że to bardziej wytrzymałe, ale polecenie jest uruchamiany z bieżącego katalogu roboczego, więc powinien działać. – zdan

+0

Masz dodatkowe "{" w drugim i trzecim poleceniu, które należy usunąć (przed "%"). – JasonMArcher

Powiązane problemy