LAPINPT

ImageMagick Batch drop files and folders

Jul 31st, 2013
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Batch 2.64 KB | None | 0 0
  1. @ECHO OFF
  2.  
  3. :: Batch to drag and drop photos
  4. :: or add to SendTo Menu RESIZE-PHOTO.bat
  5. :: explorer %USERPROFILE%\AppData\Roaming\Microsoft\Windows\SendTo
  6. :: select files or folders and open SendTo Menu
  7.  
  8. :: tools from ImageMagick and sed.exe from UnxUtils
  9. :: SET imconvert=D:\PortableApps\ImageMagick\imconvert.exe
  10. :: SET identify=D:\PortableApps\ImageMagick\identify.exe
  11. :: SET sed=D:\PortableApps\UnxUtils\sed.exe
  12.  
  13. :: you may change these settings
  14. SET width="1920^>"
  15. SET quality=-quality 90%%
  16. SET filter=-filter Lanczossharp -distort resize
  17.  
  18. SET today=%date:~0,5%
  19. SET /A count=1
  20.  
  21. IF EXIST "%~1\" (
  22.  CALL :FOLDER %*
  23. )
  24.  
  25. :: for handling with droped files
  26. :LOOP
  27. IF [%1]==[] GOTO EOF
  28.  
  29. CD /D "%~dp1"
  30.  
  31. :: check if is an image file
  32. IF /I NOT [%~x1]==[.jpg] (
  33.   IF /I NOT [%~x1]==[.png] (
  34.     IF /I NOT [%~x1]==[.gif] (
  35.       IF /I NOT [%~x1]==[.bmp] (
  36.         IF /I NOT [%~x1]==[.tif] (
  37.           GOTO :NOPHOTO
  38.         )
  39.       )
  40.     )
  41.   )
  42. )
  43.  
  44. :: get folder name to create new one
  45. FOR %%* IN (.) DO SET folder=%%~n*
  46. IF NOT EXIST "%folder%-%TODAY%" MKDIR "%folder%-%TODAY%"
  47.  
  48. :: get jpg date to apend to new file name
  49. IF /I [%~x1]==[.jpg] (
  50.   FOR /F "usebackq tokens=1" %%i IN (`identify.exe -format %%[exif:DateTime] %1 ^| sed "s/://g" ^| sed "s/^..//"`) DO SET SUFIX=-%%i
  51. )
  52.  
  53. SET source=%~nx1
  54. SET filename=%~n1
  55. SET target=%folder%-%TODAY%\%filename%%SUFIX%.jpg
  56.  
  57. :: if file does not yet exist start converting
  58. IF NOT EXIST "%target%" (
  59.   ECHO %time:~0,8%  Resizing %count%  %source%  to  %target%
  60.   imconvert -interlace Plane %filter% %width% %quality% "%source%" "%target%"
  61.   SET /A count+=1
  62. )
  63.  
  64. :NOPHOTO
  65. SHIFT
  66. GOTO LOOP
  67.  
  68.  
  69.  
  70.  
  71.  
  72. :: for handling with droped folders
  73. :FOLDER
  74. FOR /D %%D IN (%*) DO (
  75.   ECHO. & ECHO PROCESSING FOLDER %%~nD & ECHO.
  76.   CD /D "%%D"
  77.   FOR /f "delims=" %%P in ('dir /b /a:-s-h *.jpg *.png *.gif *.bmp *.tif') DO (
  78.     IF EXIST "%%P" CALL :RECURSE "%%P"
  79.   )
  80. )
  81.  
  82. GOTO EOF
  83.  
  84. :RECURSE
  85. :: get folder name to create new one
  86. FOR %%* IN (.) DO SET folder=%%~n*
  87. IF NOT EXIST "%folder%-%TODAY%" MKDIR "%folder%-%TODAY%"
  88.  
  89. :: get jpg date to apend to new file name
  90. IF /I [%~x1]==[.jpg] (
  91.   FOR /F "usebackq tokens=1" %%i IN (`identify.exe -format %%[exif:DateTime] %1 ^| sed "s/://g" ^| sed "s/^..//"`) DO SET SUFIX=-%%i
  92. )
  93.  
  94. SET source=%~nx1
  95. SET filename=%~n1
  96. SET target=%folder%-%TODAY%\%filename%%SUFIX%.jpg
  97.  
  98. :: if file does not yet exist start converting
  99. IF NOT EXIST "%target%" (
  100.   ECHO %time:~0,8%  Resizing %count%  %source%  to  %target%
  101.   imconvert -interlace Plane %filter% %width% %quality% "%source%" "%target%"
  102.   SET /A count+=1
  103. )
  104.  
  105.  
  106.  
  107.  
  108. :EOF
  109.  
  110. IF [%1]==[] ECHO. & ECHO JOB DONE! & ECHO.
Advertisement
Add Comment
Please, Sign In to add comment