Batch-запуск

Пока писал книгу, часто приходилось пропускать по нескольку сотен, а то и тысяч картинок через различные программы-оптимизаторы. Хорошо, когда эти программы имеют пакетный режим, а если нет? Выход, в общем-то простой — подумать какую последовательность кнопок надо жать в программе, чтобы оптимизировать всю папку с файлами и как-то запрограммировать нажатие.

Я пользовался для этой цели Windows Script Host, описывал что нужно жать на языке JScript. Вот, например, обрабатываются 492 изображения программой «A Smaller GIF 1.22»:
with (WScript.CreateObject("WScript.Shell")) {
    AppActivate("A Smaller GIF 1.22")

    for (var command, j = 0; j<492; j++) {
        WScript.sleep(100)

        for (command = '^O+{TAB}{DOWN}{UP}', i = 0; i<j; i++) {
            command += '{DOWN}'
        }

        SendKeys(command+'{ENTER}^S')
        WScript.sleep(100)
        SendKeys('{ENTER}')
    }
}
Всё понятно, по-моему, почти по-английски написано. О том как отсылать приложению специфические комбинации (например, Ctrl+Alt+Backspace) можно прочитать в на сайте MSDN.
27 октября 2009 17:39

aynyuh.livejournal.com (aynyuh.livejournal.com)
27 октября 2009, 20:05

Обожаю WSH. Особенно хорошо, что работает на любом компьютере с Windows, даже со свежеустановленной. Не нужна никакая подготовка.

Кстати, если уж зашла речь, то 13-я песенка о пиве (которая на JScript-е) у меня на 60-й строке прерывается и дальше идёт вывод просто набора символов. Что-то типа «5bwlba d hal rt en t w». Проверял на 4-х компьютерах. В чём загвоздка?

bolk (bolknote.ru)
27 октября 2009, 21:44, ответ предназначен aynyuh.livejournal.com:

Посмотри Windows Powershell, это действительно Power.

Гляну как-нибудь. Возможно с тех времён в WSH что-то изменилось.

bolk (bolknote.ru)
27 октября 2009, 22:23, ответ предназначен aynyuh.livejournal.com:

Похоже какой-то баг WSH. Что-то не так со скорость ввода. Если поставить задержку в 100, то всё ок.

aynyuh.livejournal.com (aynyuh.livejournal.com)
27 октября 2009, 22:55, ответ предназначен bolk (bolknote.ru):

Хех, действительно, с задержкой весь цикл отрабатывается нормально. Подобрал опытным путём: Sleep(41) — отрабатывает как задумано, Sleep(40) — глючит :)

bolk (bolknote.ru)
27 октября 2009, 23:09, ответ предназначен aynyuh.livejournal.com:

:) Видимо дело не в WSH, у Notepad сносит крышу. Забавно.

hshhhhh.name (hshhhhh.name)
28 октября 2009, 14:34, ответ предназначен bolk (bolknote.ru):

imagemagick -- пакетная обработка картинок. Очень его люблю :).

bolk (bolknote.ru)
28 октября 2009, 15:08, ответ предназначен hshhhhh.name:

Пока писал книгу, часто приходилось пропускать по нескольку сотен, а то и тысяч картинок через *различные* программы-оптимизаторы.
Причём тут imagemagick? Это, кстати, не оптимизатор.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)