在 Windows 上通过命令行批量转换图像

在 Windows 上通过命令行批量转换图像

我有一个基于的脚本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 运行:

设置 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'(批量着色“*.png”90 73 15)'-b'(gimp退出0)'

但随后 GIMP 又说出了上述内容:

GIMP-错误:无法打开文件“C:\myfolder\with\png*.png”:无法打开“C:\myfolder\with\png*.png”进行读取:参数无效

答案1

您假设操作系统会为您扩展 *.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则需要。

相关内容