Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run a simple command using PowerShell recursively on a directory

What's the fastest way using either DOS scripting or PowerShell to run this simple command on a directory and all its subdirectories:

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

DOS Batch script for single directory:

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

I want to run this recursively on a directory structure and have the output match the input hierarchy. I figured PowerShell was the easiest way, but I was unable to learn PowerShell in the 5 minutes I have to do this task!

Note: not that it's relevant, but convert is from ImageMagick.

like image 754
Simon_Weaver Avatar asked Apr 24 '09 00:04

Simon_Weaver


1 Answers

In PowerShell:

Use the -recurse switch and pipe to foreach. For e.g.:

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

(Note that the % sign is an alias of foreach-object).

like image 65
zdan Avatar answered Sep 21 '22 13:09

zdan