2

У меня есть сценарий, основанный на учебнике по GIMP:

  (define (batch-colorize pattern
                              hue
                              saturation
                              lightness)
  (let* ((filelist (cadr (file-glob pattern 1))))
    (while (not (null? filelist))
           (let* ((filename (car filelist))
                  (image (car (gimp-file-load RUN-NONINTERACTIVE
                                              filename filename)))
                  (drawable (car (gimp-image-get-active-layer image))))
             (gimp-colorize drawable
                            hue saturation lightness)
             (gimp-file-save RUN-NONINTERACTIVE
                             image drawable filename filename)
             (gimp-image-delete image))
           (set! filelist (cdr filelist)))))

Итак, теперь в папке с моими изображениями с cmd я запускаю:

SET gimpEXE = "C:\Program Files\GIMP 2\bin\gimp-2.8.exe"

% gimpEXE% -i -b "(batch-colorize * .png 90 73 15)" -b "(gimp-quit 0)";

Но тогда GIMP говорит:

В пакетной команде произошла ошибка выполнения:

Ошибка: (: 1) eval: несвязанная переменная: * .png

Итак, я попробовал:

% gimpEXE% -i -b "(batch-colorize" "* .png" "90 73 15)" -b "(gimp-quit 0)";

Но тогда GIMP говорит:

Ошибка GIMP: не удалось открыть файл C:\myfolder\with\png\90: такого файла или каталога нет

Ошибка GIMP: не удалось открыть файл C:\myfolder\with\png\73: такого файла или каталога нет

Ошибка GIMP: не удалось открыть файл C:\myfolder\with\png\15: такого файла или каталога нет

Ошибка GIMP: не удалось открыть файл C:\myfolder\with\png\0: такого файла или каталога нет

Тогда я попробовал то, что было в оригинальном примере (ведь я предполагаю, что это для Linux):

% gimpEXE% -i -b '(batch-colorize "* .png" 90 73 15)' -b '(gimp-quit 0)'

Но тогда GIMP говорит все выше и:

Ошибка GIMP: не удалось открыть файл «C:\myfolder\with\png * .png»: невозможно открыть «C:\myfolder\with\png * .png» для чтения: неверный аргумент

1 ответ1

3

Вы предполагаете, что ОС собирается расширить * .png для вас, но, поскольку он находится внутри строки в кавычках для аргумента командной строки, расширение не произойдет. Это должно решить проблему:

SET gimpEXE="C:\Program Files\GIMP 2\bin\gimp-2.8.exe"
for %%i in (*.png) do %gimpEXE% -i -b "(batch-colorize %%i 90 73 15)" -b "(gimp-quit 0)"

Обратите внимание, что %%i необходим только в том случае, если он содержится в командном файле. Если вы запускаете команду непосредственно в командной строке, вместо нее требуется %i .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .