Search code examples
batch-filerecursionjpegtran

recursive .bat file to apply jpegtran and pngout to all images in subfolders


I have this script to optimize images inside a directory, I need to make this recursive in order to optimize all images in subdirectories, leaving filenames and folder structure unchanged.. Anyone can help to modify this code in order to modify images in subdirectories too?

@echo none
cd %1
md "%~1\OptimizedJPEGS"
for %%i in (*.jpg) do "C:\imageoptimization\jpegtran.exe" -optimize -progressive -copy none "%%i" "%~1\OptimizedJPEGS\%%i"
move /Y "%~1\OptimizedJPEGS\*.*" "%~1"
rd "%~1\OptimizedJPEGS"
for %%i in (*.png) do "C:\imageoptimization\pngout.exe" "%%i" 

Solution

  • This should work when launched in the main folder of the image tree.
    Test it on some sample folders first.

    @echo none
    for /d /r %%a in (*) do (
       pushd "%%a"
         echo processing "%%a"
         md "OptimizedJPEGS" 
            for %%i in (*.jpg) do "C:\imageoptimization\jpegtran.exe" -optimize -progressive -copy none "%%i" "OptimizedJPEGS\%%i"
            move /Y "OptimizedJPEGS\*.*" .
         rd "OptimizedJPEGS"
            for %%i in (*.png) do "C:\imageoptimization\pngout.exe" "%%i" 
       popd
    )