0

我有一个脚本 blackandwhite.py 放在“C:\Users\Marcin.gimp-2.8\plug-ins”文件夹中。它需要两个目录作为参数。从 GIMP 菜单或 python-fu 控制台执行时,它工作得很好:

pdb.python_fu_black_and_white("L:\PICS", "L:\OUT");

但是,当我尝试从命令行执行它时

gimp-console-2.8.exe -df --batch-interpreter python-fu-eval -b "from gimpfu import *;pdb.python_fu_black_and_white(0,"L:\PICS", "L:\OUT")" -b "pdb.gimp_quit(1)"

它给出了“批处理命令遇到执行错误”。有谁知道如何正确地做到这一点?

4

2 回答 2

1

在 Windows 中,最简单的方法是用双引号将 CMD.EXE 标记括起来,并对 Python 代码 (*) 使用单引号:

gimp-console-2.8.exe -df --batch-interpreter python-fu-eval -b "from gimpfu import *;pdb.python_fu_black_and_white(0,'L:/PICS', 'L:/OUT')" -b "pdb.gimp_quit(1)"

您可以通过使用正斜杠作为文件分隔符来避免很多问题,Windows 在任何地方都接受它们,除了命令行参数(但这里它们是 Python 字符串)。

此外,如果您仅批量使用脚本,则无需将其注册为插件。有关一些示例代码,请参见此处

(*) 在 Linux/macOS 中,做相反的事情:命令行参数用单引号,Python 字符串用双引号。

于 2018-05-24T22:11:02.550 回答
0

查看您的命令在 Stack Overflow 上突出显示语法的方式。

我将它包装起来,以便更容易看到:

gimp-console-2.8.exe -df --batch-interpreter python-fu-eval -b \
    "from gimpfu import *;pdb.python_fu_black_and_white(0,"L:\PICS", "L:\OUT")" \
    -b "pdb.gimp_quit(1)"  #                                  ^         ^
                           #                                 here and here

您正在嵌套双引号。您需要转义它们,或者更好的是,用单引号替换一组:

gimp-console-2.8.exe -df --batch-interpreter python-fu-eval -b \
    'from gimpfu import *;pdb.python_fu_black_and_white(0,"L:\PICS", "L:\OUT")' \
    -b "pdb.gimp_quit(1)"
于 2018-05-24T17:40:53.790 回答