使用 Ant 遍历目录 [英] Iterating through a directory with Ant

查看:30
本文介绍了使用 Ant 遍历目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一组具有以下路径的 PDF 文件:

Let's say I have a collection of PDF files with the following paths:

/some/path/pdfs/birds/duck.pdf
/some/path/pdfs/birds/goose.pdf
/some/path/pdfs/insects/fly.pdf
/some/path/pdfs/insects/mosquito.pdf

我想做的是为每个尊重相对路径结构的 PDF 生成缩略图,并输出到另一个位置,即:

What I'd like to do is generate thumbnails for each PDF that respect the relative path structure, and output to another location, i.e.:

/another/path/thumbnails/birds/duck.png
/another/path/thumbnails/birds/goose.png
/another/path/thumbnails/insects/fly.png
/another/path/thumbnails/insects/mosquito.png

我希望这在 Ant 中完成.假设我将在命令行上使用 Ghostscript 并且我已经解决了对 GS 的调用:

I'd like this to be done in Ant. Assume I'm going to use Ghostscript on the command line and I've already worked out the call to GS:

    <exec executable="${ghostscript.executable.name}">
        <arg value="-q"/>
        <arg value="-r72"/>
        <arg value="-sDEVICE=png16m"/>
        <arg value="-sOutputFile=${thumbnail.image.path}"/>
        <arg value="${input.pdf.path}"/>
    </exec>

所以我需要做的是计算出 ${thumbnail.image.path}${input.pdf.path} 的正确值,同时遍历PDF输入目录.

So what I need to do is work out the correct values for ${thumbnail.image.path} and ${input.pdf.path} while traversing the PDF input directory.

我可以访问 ant-contrib(刚刚安装了最新的",即 1.0b3)并且我使用的是 Ant 1.8.0.我想我可以使用 任务、s 和 s 来做一些工作,但我无法将所有内容整合在一起.

I have access to ant-contrib (just installed the "latest", which is 1.0b3) and I'm using Ant 1.8.0. I think I can make something work using the <for> task, <fileset>s and <mapper>s, but I am having trouble putting it all together.

我尝试了类似的东西:

    <for param="file">
        <path>
            <fileset dir="${some.dir.path}/pdfs">
                <include name="**/*.pdf"/>
            </fileset>
        </path>
        <sequential>
            <echo message="@{file}"/>
        </sequential>
    </for>

但不幸的是 @{file} 属性是一个绝对路径,我找不到任何简单的方法将其分解为相关组件.

But unfortunately the @{file} property is an absolute path, and I can't find any simple way of decomposing it into the relative components.

如果我只能使用自定义任务执行此操作,我想我可以编写一个,但我希望我可以将现有组件插入在一起.

If I can only do this using a custom task, I guess I could write one, but I'm hoping I can just plug together existing components.

推荐答案

在顺序任务中,您可以使用 ant-contrib propertyregex 任务将输入路径映射到输出.例如:

In the sequential task you could may be able to use the ant-contrib propertyregex task to map the input paths to output. For example:

<propertyregex override="yes" property="outfile" input="@{file}"
               regexp="/some/path/pdfs/(.*).pdf"
               replace="/another/path/\1.png" />

哪些映射,例如 /some/path/pdfs/birds/duck.pdf/another/path/birds/duck.png.

Which maps, for example /some/path/pdfs/birds/duck.pdf to /another/path/birds/duck.png.

这篇关于使用 Ant 遍历目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆