2009-04-27 54 views
17

Tôi có lệnh Bash đơn giản để định lại kích thước một số hình ảnh tự động trên trang web có lưu lượng truy cập thấp bằng ImageMagick - Tôi muốn chuyển đổi sang lệnh PowerShell để không phải cài đặt Cygwin trên máy chủ web của mình. Bất cứ ai có thể cho mượn kỹ năng PSh của họ ở đây?Chuyển đổi lệnh xargs Bash thành PowerShell?

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

Trả lời

26

Đặt cược của bạn tốt nhất là ống đầu ra của ls cho foreach-object commandlet như thế này (% là một bí danh cho foreach-object):

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

Edit: ls kết quả đầu ra một danh sách các Các đối tượng FileInfo hoặc DirectoryInfo vào đường dẫn. Để lọc ra các đối tượng DirectoryInfo, sử dụng bộ lọc nơi đối tượng (? Là bí danh):

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

Nếu bạn cần truy cập vào tên đường dẫn đầy đủ trong lệnh của bạn, sử dụng thuộc tính FullName của đối tượng FileInfo ($ _ bởi chính nó sẽ được giải quyết đến $ _ Tên mà chỉ là tên tập tin):..

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

tôi nghĩ bạn nên thay đổi $ _ đến $ _ FullName – BeWarned

+1

bạn đang có lẽ đúng, đó là mạnh mẽ hơn, nhưng lệnh là đang chạy từ thư mục làm việc hiện tại, vì vậy nó sẽ hoạt động. – zdan

+0

Bạn có thêm "{" trong lệnh thứ hai và thứ ba cần được xóa (trước "%"). – JasonMArcher

Các vấn đề liên quan