我在一个目录中有许多postscript (.ps)文件,其名称如下
cct@TOP_VMAIN_AND_3V3_SMPS,smps_ota,schematic.ps 我想批量转换成.png文件
我已经有了以下命令(使用bash):
gs -dSAFER -dBATCH -sDEVICE=pnggray -dTextAlphaBits=4 -r300 -sOutputFile=out-%d.png *.ps这是可以的,但是,很明显,它只输出out-1.png,out-2.png等等,这意味着我不知道哪个.png来自哪个.ps。
我想要做的是能够保留文件名,以便
cct@TOP_VMAIN_AND_3V3_SMPS,smps_ota,schematic.ps 被转换为
cct@TOP_VMAIN_AND_3V3_SMPS,smps_ota,schematic.png对于每个文件。我该怎么做呢?
发布于 2015-10-02 17:44:14
使用bash的参数扩展:
f="cct@TOP_VMAIN_AND_3V3_SMPS,smps_ota,schematic.ps"
echo "${f%.*}.png" # Remove everything after the last dot.发布于 2015-10-02 17:52:03
您需要一个循环,以便获得单个文件名:
for psf in *.ps; do
pngf="`basename $psf`.png";
gs -dSAFER -dBATCH -sDEVICE=pnggray -dTextAlphaBits=4 -r300 -sOutputFile="$pngf" "$psf"
done不过,这是未经测试的。它也很慢,特别是对于许多小文件,因为ghostscript会一次又一次地重启。可以通过管道将输入提供给在后台运行的gs,并通过管道将同一运行进程的输出重定向到不同的文件,但这似乎很困难(我如何判断ghostscript已经完成了一个作业?)和过度杀伤力。
https://stackoverflow.com/questions/32904468
复制相似问题