Inkscape命令行转换文件列表



我在Powershell中使用Windows批处理脚本将文件夹中所有编号的。svg文件转换为。png文件,在命令行上使用Inkscape,基于前面问题的答案。

@echo off
for %%i in ("%~dp0*.svg") do (
echo %%i to %%~ni.png
"C:Program FilesInkscapebininkscape.com" --export-type="png" --export-background-opacity=1.0 "%%i"
)

脚本为每个文件再次调用Inkscape,我怀疑这是主要的速度瓶颈(我有许多文件要转换)。我更愿意调用一次Inkscape,并提供要转换的文件列表。

是否可以使用--shell模式来做到这一点?我找不到一个使用这种方法的例子。

我发现的一种方法是使用带有一系列"动作"的交互式--shell模式。和";verbs"例如:

inkscape --shell
> file-open:file001.svg;export-filename:file001.png;export-do; file-open:file002.svg;export-filename:file002.png;export-do;

您可以生成这些动作和动词序列的长列表,每个文件一个。它工作得非常好,但不幸的是,我无法粘贴一个足够大的文本字符串来处理我想转换的数千个SVG文件。我认为Powershell受限于你可以粘贴的文本数量,就像通常的命令提示符一样。

因此,如果Inkscape的未来版本能够接受包含这样一个命令列表的批处理文件,那就太好了。目前看来,这似乎是不可能的,据我从文档中可以看出。

根据您自己的答案,我创建了一个名为inkscape.cmd的10,000行文件,看起来像这样:

inkscape-version
inkscape-version
inkscape-version
...
...

并运行:

inkscape --shell < inkscape.cmd

我只在macOS上测试过,因为我没有Windows。

最新更新