Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8

Модерирует : KLASS, IFkO

vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

lorents



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
@echo off
TITLE ImageOptimizer 1.1.0.0 от 01.07.2010
echo Image Optimizer - сборник программ для оптимизации/сжатии картинок формата PNG и JPEG без потери качества, состоящий из следующих программ:
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 8b от 16.05.2010);
echo * OptiPng 0.6.4 от 15.03.2010;
echo * PngOut от 09.06.2010;
echo * PrePng от 17.05.10;
echo * Zlib 1.2.5 от 19.04.2010.
 
echo.
echo Автор не несет ответственность за работу данного приложения.
echo Вы используете данное приложение под свой страх и риск.
 
if not exist "%~dp0Docs\advpng.exe" set "nofile=AdvPng "
if not exist "%~dp0Docs\deflopt.exe" set "nofile=%nofile%DeflOpt "
if not exist "%~dp0Docs\jhead.exe" set "nofile=%nofile%Jhead "
if not exist "%~dp0Docs\jpegtran.exe" set "nofile=%nofile%Jpegtran "
if not exist "%~dp0Docs\optipng.exe" set "nofile=%nofile%OptiPng "
if not exist "%~dp0Docs\pngout.exe" set "nofile=%nofile%PngOut "
if not exist "%~dp0Docs\prepng.exe" set "nofile=%nofile%PrePng "
if not exist "%~dp0Docs\zlib.dll" set "nofile=%nofile%Zlib"
if defined nofile (
echo.
echo Приложение не смогло получить доступ к следующим файлам: %nofile%
echo Нажмите на Enter для выхода из приложения.
pause>nul
goto:eof
)
 
echo.
echo Скопируйте необходимые картинки или папки с картинками в папку "Images" и нажмите на Enter для продолжения.
 
pause>nul
 
setlocal ENABLEDELAYEDEXPANSION
set logfile=Images.csv
 
:png
1>nul 2>nul dir /b /s /a-d Images\*.png || goto:jpeg
 
:loop1
echo.
echo Параметр оптимизации PNG - Interlace:
echo [1] Noninterlaced;
echo [2] Adam7 (Interlaced).
echo Если Вы не хотите оптимизировать картинки формата PNG, то, не вводя параметр оптимизации, нажмите на Enter.
set /p png="Укажите параметр оптимизации PNG и нажмите на Enter: "
if defined png if "%png%" neq "1" if "%png%" neq "2" (
echo.
echo Вы указали неправильное значение параметра оптимизации/сжатии картинок. & goto:loop1
)
 
:jpeg
1>nul 2>nul dir /b /s /a-d Images\*.jpg Images\*.jpeg && goto:loop2
if defined png goto :pngwork
echo.
echo Картинки формата PNG и JPEG в папке "Images" не обнаружены.
echo Нажмите на Enter для выхода из приложения.
pause>nul
goto:eof
 
:loop2
echo.
echo Параметр оптимизации JPEG - Encoding Process:
echo [1] Optimize;
echo [2] Progressive;
echo [3] Progressive vs. Optimize (сравниваются по размеру картинки, полученные обоими методами сжатия, и выбирается файл с наименьшим размером).
echo Внимание. При Progressive'ом методе сжатие оригинальное и полученное картинки попиксельно будут отличаться, но на глаз определить не возможно.
echo Если Вы не хотите оптимизировать картинки формата JPEG, то, не вводя параметр оптимизации, нажмите на Enter.
set /p jpeg="Укажите параметр оптимизации JPEG и нажмите на Enter: "
if defined jpeg if "%jpeg%" neq "1" if "%jpeg%" neq "2" if "%jpeg%" neq "3" (
echo.
echo Вы указали неправильное значение параметра оптимизации/сжатии картинок. & goto:loop2
)
 
:pngwork
if not defined png goto :jpegwork
if %png%==1 goto:Noninterlaced
if %png%==2 goto:Adam7
goto:jpegwork
 
:Noninterlaced
echo Noninterlaced
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    set origsize=%%~zi
    "%~dp0Docs\prepng.exe" "%%~fi"
    call :pngopt "%%~fi"
    "%~dp0Docs\advpng.exe" -z -4 "%%~fi"
    "%~dp0Docs\deflopt.exe" "%%~fi"
    call :savelog "%%i" !origsize!
)
goto :jpegwork
 
: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
exit /b
 
:Adam7
echo Adam7
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.png') do (
    set origsize=%%~zi
    "%~dp0Docs\prepng.exe" "%%~fi"
    "%~dp0Docs\optipng.exe" -i1 -zw32k -zc1-9 -zm1-9 -zs0-3 -f0-5 "%%~fi"
    "%~dp0Docs\advpng.exe" -z -4 "%%~fi"
    "%~dp0Docs\deflopt.exe" "%%~fi"
    call :savelog "%%i" !origsize!
)
 
:jpegwork
if not defined jpeg goto:eof
if %jpeg%==1 goto:Optimize
if %jpeg%==2 goto:Progressive
if %jpeg%==3 goto:Progressive_Optimize
goto:eof
 
:Optimize
echo JPEG - Optimize
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.jpg Images\*.jpeg') do (
    set origsize=%%~zi
    "%~dp0Docs\jpegtran.exe" -copy all -optimize "%%~fi" "%%~fi"
    "%~dp0Docs\jhead.exe" -dc -de -di -dx -du "%%~fi"
    call :savelog "%%i" !origsize!
)
goto:eof
 
:Progressive
echo JPEG - Progressive
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.jpg Images\*.jpeg') do (
    set origsize=%%~zi
    "%~dp0Docs\jpegtran.exe" -copy all -progressive "%%~fi" "%%~fi"
    "%~dp0Docs\jhead.exe" -dc -de -di -dx -du "%%~fi"
    call :savelog "%%i" !origsize!
)
goto:eof
 
:Progressive_Optimize
echo JPEG - Progressive vs. Optimize
for /f "delims=" %%i in ('dir /b /s /a-d Images\*.jpg Images\*.jpeg') do (
    set origsize=%%~zi
    "%~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"
    call :savelog "%%i" !origsize!
)
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
)
exit /b
 
:savelog
set /a "change=%2-%~z1"
set /a "perc=100-%~z1*100/%2"
echo %~nx1;%2;%~z1;%change%;%perc%>>%logfile%
exit /b

Всего записей: 3297 | Зарегистр. 30-12-2007 | Отправлено: 15:51 26-06-2010 | Исправлено: lorents, 15:53 26-06-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 8
vu1tur (04-09-2010 17:46): http://forum.ru-board.com/topic.cgi?forum=62&topic=21297


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru