PDA

Показать полную графическую версию : ImageOptimizer


lorents
11-06-2010, 14:31
Помогите пожалуйста, переделать батник,
чтобы при Drag-and-drop файлы копировались в папку Images и запускался процесс обработки, вот только здесь две проблемы:
1. чтобы была проверка на название картинок, если название картинок повторяются то переименовать:
2. как сделать чтобы обработка была не всех картинок, которые в папке Images, а только новых.

Как видно в батнике есть запрос параметров png и jpeg для обработки, и вот проблема что если в папке Images есть файлы и png и jpeg, то с начала выдается запрос на параметров png, потом идет обработка png-файлов, а потом только запрос на jpeg, как можно сделать, чтобы запросы шли подряд, и только после этого их обработка?

Как можно применить шрифт lucida console, но без изменений в реестре, а то везде через реестр, мне надо применить исключительно на мой батник

@echo off
TITLE ImageOptimizer 1.1.0.0 от 01.07.2010
echo Image Optimizer 1.1.0.0 от 01.07.2010
echo Image Optimizer - система оптимизации графических форматов *.png и *.jpg, состоящий из следующих программ:
echo * Advpng (входит в состав AdvanceComp 1.15 от 01.11.2005);
echo * DeflOpt 2.07 от 05.09.2007;
echo * Jhead 2.90 от 05.02.2010;
echo * Jpegtran (входит в состав Libjpeg 8.0 от 10.01.2010);
echo * OptiPng 0.6.4 от 15.03.2010;
echo * PngCrush 1.7.11 от 10.05.2010;
echo * PngOut от 09.06.2010;
echo * PrePng от 17.05.10;
echo * Zlib 1.2.5 от 19.04.2010.
echo Автор не несет ответственность за работу данного приложения.
echo Вы используете данную программу под свой страх и риск.
echo Скопируйте необходимые изображения формата *.png или *.jpg (*.jpeg) в папку "Images" и нажмите на Enter для продолжения.

pause>nul

:png
1>nul 2>nul dir /b /s /a-d Images\*.png || goto:jpeg

:loop1
echo Параметр оптимизации PNG:
echo [1] Noninterlaced
echo [2] Adam7 (Interlaced)

set /p png="Укажите параметр оптимизации PNG и нажмите на Enter: "

if not defined png goto:eof
if %png%==1 goto:Noninterlaced
if %png%==2 goto:Adam7
goto:loop1

:Noninterlaced
echo Noninterlaced
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
"%~dp0Docs\prepng.exe" "%%~fi"
call :pngopt "%%~fi"
"%~dp0Docs\advpng.exe" -z -4 "%%~fi"
"%~dp0Docs\deflopt.exe" "%%~fi"
rem "%~dp0Docs\pngcrush.exe" -rem alla -brute -reduce "%%~fi" "%%~dpni.tmp"
rem move /y "%%~dpni.tmp" "%%~fi"
rem "%~dp0Docs\advpng.exe" -z -4 "%%~fi"
rem "%~dp0Docs\deflopt.exe" "%%~fi"
rem "%~dp0Docs\optipng.exe" -i0 -zc1-9 -zm1-9 -zs0-3 -f0-5 "%%~fi"
rem "%~dp0Docs\advpng.exe" -z -4 "%%~fi"
rem "%~dp0Docs\deflopt.exe" "%%~fi"
rem "%~dp0Docs\pngout.exe" "%%~fi"
rem "%~dp0Docs\advpng.exe" -z -4 "%%~fi"
rem "%~dp0Docs\deflopt.exe" "%%~fi"
)
goto:jpeg

:pngopt
"%~dp0Docs\optipng.exe" -i0 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 -full -force %1 > %temp%\png.log
for /f "delims==,IDAT tokens=5" %%i in (%temp%\png.log) do (
set f=%%i
)
set f=%f:~1,1%
del %temp%\png.log
"%~dp0Docs\pngout.exe" /k0 /n2 /f%f% %1
goto:eof

:Adam7
echo Adam7
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
"%~dp0Docs\prepng.exe" "%%~fi"
"%~dp0Docs\optipng.exe" -i1 "%%~fi"
"%~dp0Docs\pngcrush.exe" -rem alla -brute -reduce "%%~fi" "%%~dpni.tmp"
move /y "%%~dpni.tmp" "%%~fi"
"%~dp0Docs\advpng.exe" -z -4 "%%~fi"
"%~dp0Docs\deflopt.exe" "%%~fi"
"%~dp0Docs\optipng.exe" -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 "%%~fi"
"%~dp0Docs\advpng.exe" -z -4 "%%~fi"
"%~dp0Docs\deflopt.exe" "%%~fi"
)

:jpeg
1>nul 2>nul dir /b /s /a-d Images\*.jpg Images\*.jpeg && goto:loop2
if defined png goto:eof
echo Изображения формата *.png и *.jpg (*.jpeg) в папке "Images" не обнаружены.
echo Нажмите на Enter для выхода из приложения.
pause>nul
goto:eof)

:loop2
echo Параметр оптимизации JPEG:
echo [1] Optimize
echo [2] Progressive
echo [3] Progressive vs. Optimize (сравниваются два файла, полученные разными методами сжатия, и выбирается наименьший из них)

set /p jpeg="Укажите параметр оптимизации JPEG и нажмите на Enter: "

if not defined jpeg goto:eof
if %jpeg%==1 goto:Optimize
if %jpeg%==2 goto:Progressive
if %jpeg%==3 goto:Progressive_Optimize
goto:loop2

:Optimize
echo JPEG - Optimize
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.jpg Images\*.jpeg') do (
"%~dp0Docs\jpegtran.exe" -copy all -optimize "%%~fi" "%%~fi"
"%~dp0Docs\jhead.exe" -dc -de -di -dx -du "%%~fi"
)
goto:eof

:Progressive
echo JPEG - Progressive
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.jpg Images\*.jpeg') do (
"%~dp0Docs\jpegtran.exe" -copy all -progressive "%%~fi" "%%~fi"
"%~dp0Docs\jhead.exe" -dc -de -di -dx -du "%%~fi"
)
goto:eof

:Progressive_Optimize
echo JPEG - Progressive vs. Optimize
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.jpg Images\*.jpeg') do (
"%~dp0Docs\jpegtran.exe" -copy all -progressive "%%~fi" "%%~dpni_pro.tmp"
"%~dp0Docs\jpegtran.exe" -copy all -optimize "%%~fi" "%%~dpni_opt.tmp"
call :compare "%%~dpni_pro.tmp" "%%~dpni_opt.tmp" "%%~fi" "%%~nxi"
"%~dp0Docs\jhead.exe" -dc -de -di -dx -du "%%~fi"
)
goto:eof

:compare
if %~z1 LSS %~z2 (
DEL /F /Q %2
DEL /F /Q %3
REN %1 %4
) else (
DEL /F /Q %1
DEL /F /Q %3
REN %2 %4
)
goto:eof

Если есть идеи, как улучшить код, напишите пожалуйста




© OSzone.net 2001-2012