Conversão em lote para imagens a partir da linha de comando no Windows

2

Eu tenho um script baseado no tutorial em lote do 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)))))

Agora, na pasta com minhas imagens com o cmd, corro:

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)";

Mas o GIMP diz:

batch command experienced an execution error:

Error: ( : 1) eval: unbound variable: *.png

Então eu tentei:

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

Mas o GIMP diz:

GIMP-Error: Failed to open file C:\myfolder\with\png: No such file or directory

GIMP-Error: Failed to open file C:\myfolder\with\png: No such file or directory

GIMP-Error: Failed to open file C:\myfolder\with\png: No such file or directory

GIMP-Error: Failed to open file C:\myfolder\with\png

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

: No such file or directory

Então eu tentei o que estava em um exemplo original (que eu presumo que seja para Linux):

GIMP-Error: Failed to open file "C:\myfolder\with\png*.png": Unable to open "C:\myfolder\with\png*.png" for reading: Invalid argument

Mas o GIMP diz tudo acima e:

%bl0ck_qu0te%     
por Nux 09.09.2013 / 20:48

1 resposta

3

Você está assumindo que o SO irá expandir o * .png para você, mas como ele está enterrado dentro da string citada para o argumento da linha de comando, a expansão não acontecerá. Isso deve corrigir o problema:

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)"

Observe que %%i é necessário apenas se isso estiver contido em um arquivo em lotes. Se você estiver executando o comando diretamente no prompt, %i será necessário.

    
por 25.09.2013 / 22:47