2009-04-27 27 views
17

Tengo un comando Bash simple para cambiar el tamaño de algunas imágenes automáticamente en un sitio web de poco tráfico con ImageMagick. Me gustaría convertir esto en un comando de PowerShell para no tener que instalar Cygwin en mi servidor web. ¿Alguien puede prestar sus habilidades de PSh aquí?Convierte el comando xargs Bash a PowerShell?

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

Respuesta

26

Su mejor apuesta es a canalizar la salida de ls a la commandlet foreach a objetos como este (% es un alias para foreach-object):

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

Editar: ls da salida a una lista de Los objetos FileInfo o DirectoryInfo en la tubería. Para filtrar los objetos DirectoryInfo, utilice el filtro donde a objetos (? Es seudónimo):

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

Si necesita acceder a la ruta completa en el comando, utilice la propiedad FullName del objeto FileInfo ($ _ por sí mismo será resuelto a $ _ Nombre que es justo el nombre del archivo):..

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

creo que debería cambiar $ _ a $ _ NombreCompleto – BeWarned

+1

probablemente tienes razón, eso es más robusto, pero el comando es se ejecuta desde el directorio de trabajo actual, por lo que debería funcionar. – zdan

+0

Tiene un "{" adicional en el segundo y tercer comando que debe eliminarse (antes del "%"). – JasonMArcher