Inkscape的批处理脚本在任意点冻结

时间:2018-07-16 03:29:16

标签: batch-file inkscape

我有超过5,000张世界地图的光盘(作为SVG文件),我想在特定时间段内提取每张地图的特定区域。因此,我编写了一个批处理脚本,该脚本循环调用Inkscape,并在两个指定日期之间裁剪每个地图。

这是我使用的代码:

@echo off

set /A start=900
set /A end=1800
set x1=24073
set y1=22320
set x2=30708
set y2=28063
set width=900
set height=780
set output=Europe

set outpath=C:\Europe\
set inpath=D:\

set /A total=%end%-%start%
setlocal enabledelayedexpansion enableextensions

for /l %%i in (0,1,%total%) do (

set /A t_date=%start%+%%i
set /A count=%%i+1
set aorb=X
if !t_date! lss 1 (set aorb=B
set /A t_date=!t_date!*-1
set /A t_date=!t_date!+1
) else (set aorb=A)

::Format input file (e.g., W[A|B]XXXX.svg)
set infile=!t_date!.svg
if !t_date! lss 1000 (set infile=0!infile!)
if !t_date! lss 100 (set infile=0!infile!)
if !t_date! lss 10 (set infile=0!infile!)
set infile=W!aorb!!infile!

::Format output file (e.g., Europe_XXXX.png)
set outfile=!count!.png
if !count! lss 1000 (set outfile=0!outfile!)
if !count! lss 100 (set outfile=0!outfile!)
if !count! lss 10 (set outfile=0!outfile!)
set outfile=%output%_!outfile!

::Most important line here
inkscape --export-area=%x1%:%y1%:%x2%:%y2% --export-png=%outpath%!outfile! --export-width=%width% --export-height=%height% %inpath%!infile!
::Echo count to keep track of progress
echo !count! of %total% maps complete
)

pause

请原谅缺少文档。其中大多数只是格式化输入和输出文件名。可以理解,这段代码非常慢,并且在数百年的日期范围内,最终需要花费超过12个小时才能完成。

但是,最近,当我重新运行此代码时,它似乎在随机点处冻结,仅提供如下正常输出:

63 of 900 maps complete
Background RRGGBBAA: ffffff00
Area 24073:22320:30708:28063 exported to 900 x 780 pixels (13.0385 dpi)
Bitmap saved as: 
C:\Europe\Europe_0064.png

1)脚本没有终止2)没有给出任何错误消息3)不管我将其保留多少小时,代码都没有进展,并且4)似乎不是由任何原因引起的外部动作,例如锁定计算机。在我的实验中,我看到它停止在第5、16、63或118号地图上,一个实例与另一个实例之间绝对没有模式。在这种情况下,我可以采取的唯一方法是使用ctrl+C终止脚本,删除到目前为止生成的所有映射,然后重试。

关于批处理脚本或Inkscape的信息是否可能导致这种情况?我可以检查或排除哪些类型的东西?

我注意到,有时Inkscape可能会遇到启动时崩溃的问题(这有时发生在我身上,但不足以引起关注)。批处理脚本在后台使用的Inkscape实例是否同样会崩溃,从而导致卡住?

在Windows 10上使用Inkscape 0.92

编辑我按照以下建议使用了echo %time%,并得到了以下结果:

18:11:30.19
5 of 900 maps complete
18:11:30.19
Background RRGGBBAA: ffffff00
Area 24073:22320:30708:28063 exported to 900 x 780 pixels (13.0385 dpi)
Bitmap saved as: C:\Europe\Europe_0006.png

这与我为原始代码获得的代码相同,只是添加了时间签名。但是,奇怪的是,似乎每次代码迭代都给出了完全相同的时间签名,几乎就像Inkscape命令根本没有使用。我还有其他想念的地方吗?总的来说,这肯定给我带来的问题多于答案。

0 个答案:

没有答案