2009-04-24 21 views
6

¿Cuál es la manera más rápida utilizando secuencias de comandos DOS o PowerShell para ejecutar este sencillo comando en un directorio y todos sus subdirectorios:ejecutar un comando simple utilizando PowerShell de forma recursiva en un directorio

convert filename.jpg -resize 620x620 "R:\processed\filename.jpg" 

DOS archivo por lotes para un solo directorio:

FOR %%a in (*.jpg) DO convert %%a -resize 620x620 "R:\processed\%%a" 

que desee ejecutar esta manera recursiva en una estructura de directorios y tener la salida coincide con la jerarquía de entrada. Pensé que PowerShell era la manera más fácil, pero no pude aprender PowerShell en los 5 minutos que tengo para hacer esta tarea.

Nota: no es relevante, pero convert es de ImageMagick.

Respuesta

21

En PowerShell:

Utilice el interruptor de -recurse y el tubo de foreach. Por ejemplo:

dir -recurse -include *.jpg | %{convert $_.FullName -resize 620x620 "R:\processed\$_"} 

(Tenga en cuenta que el signo% es un alias de foreach-object).

+0

gracias. perdón por ser flojo. Lo probaré –

+0

@dangph ¡Gracias por la aclaración! – zdan

+0

"R: \ processed \ $ _. Name" debe ser "R: \ processed \ $ ($ _. Name)" para obtener el nombre del archivo en la cadena. –

Cuestiones relacionadas