Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сжатие фотографий из CMD (http://forum.oszone.net/showthread.php?t=227408)

xctr 09-02-2012 13:24 1854767

Сжатие фотографий из CMD
 
Доброго всем времени суток!
Требуется сжать фотографии с помощью консоли. Фотографии хранятся в папке в которой имеются под папки в которых тоже есть фотографии. И это всё необходимо сжать, причём сжимать надо раз в сутки не сжимая ранее сжатые фото т.к. будут добавляться новые фотографии.
Пробовал nConvert, но так и не вышло обработать подкаталоги, и сделать чтобы не обрабатывались ранее сжатые фотографии.
Прошу помочь уважаемых гуру в решении данной задачи.

Iska 09-02-2012 14:08 1854795

xctr, начните с того, в каком исходном формате находятся фотографии. Затем расскажите, что Вы подразумеваете подо «сжать». Под конец опишите, как Вы сие делали при помощи «nconvert.exe».

xctr 09-02-2012 19:02 1855001

Хех извиняюсь за неполный вопрос. Фотографий в формате .jpg. Сжать значит уменьшить размер фото (кол-во пикселей) на указанный процент (В команде должно быть прописано, на сколько процентов уменьшить) чтобы уменьшить размер фото в КБ. В nconvert дошел только для "урезания фото" на указанный процент в исходной папке:
Код:

nconvert -overwrite -resize 50% 50% *.jpg
Как я писал выше не получается сделать:
Цитата:

Цитата xctr
но так и не вышло обработать подкаталоги, и сделать чтобы не обрабатывались ранее сжатые фотографии. »


xctr 10-02-2012 05:20 1855290

В общем нужно что нибудь для автоматического уменьшения размера фотографии в корневой папке с обработкой всех под папок...

kiripanda 10-02-2012 20:55 1855841

http://forum.wincmd.ru/viewpost.php?p=47101
http://forum.wincmd.ru/viewpost.php?p=87788

Iska 10-02-2012 22:39 1855916

xctr, насчёт:
Цитата:

Цитата xctr
…и сделать чтобы не обрабатывались ранее сжатые фотографии. »

сделать можно, но не нужно. Достаточно иметь промежуточную папку для обработки. Держать обработанные и необработанные файлы «в одном флаконе» — неправильно.

По остальному — примерно так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sPath="E:\Песочница\0115\*.jpg"

call :GetTemporaryName

>nul chcp 1251
>"%TemporaryName%" dir /s /b "%sPath%"
>nul "%ProgramFiles%\XnView\nconvert.exe" -ratio -resize 50%% 50%% -overwrite -l "%TemporaryName%"
>nul chcp 866

>nul del /f /q "%TemporaryName%"

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
    setlocal enableextensions enabledelayedexpansion

:NextName
    set sTempName=%temp%\temp%random%.tmp

    if exist "%sTempName%" goto :NextName

    set sProcName=%~0

    endlocal & set %sProcName:~4%=%sTempName%
    exit /b 0
rem ==========================================================================

где «sPath» — путь и маска файлов.

xctr 12-02-2012 13:22 1856836

Iska, спасибо это то что нужно!


Время: 11:02.

Время: 11:02.
© OSzone.net 2001-