Question: I want do compile all `*.less` scripts in a specific folder and it subdirs with **less-rhino-1.1.3.js**. 

There is an example on github for doing this for a specific file, which works perfect. But I want to do the same for a complete folder. I tried a lot, here is my last try.

It doesn't work, `propertyregex` seems not to be standard ANT, I don't want to use such things. I am not even sure if this code would work.

```
<project name="test" default="main" basedir="../../">
<property name="css.dir" location="public/css"/>
<property name="tool.less" location="bin/less/less-rhino-1.1.3.js"/>
<property name="tool.rhino" location="bin/tools/rhino/js.jar"/>
<macrodef name="lessjs">
    <attribute name="input" />
    <attribute name="output" />
    <sequential>
        <java jar="${tool.rhino}" fork="true" output="@{output}">
            <arg path="${tool.less}"/>
            <arg path="@{input}"/>
        </java>
        <echo>Lessjs: generated @{output}</echo>
    </sequential>
</macrodef>

<target name="main">
     <echo>compiling less css</echo>
     <fileset dir="${css.dir}" id="myfile">
          <filename name="**/*.less" />
     </fileset>
     <property name="lessfilename" refid="myfile"/>
     <propertyregex property="cssfilename"
          input="${lessfile}"
          regexp="^(.*)\.less$"
          replace="^\1\.css$" 
          casesensitive="true" />
     <lessjs input="lessfile" output="cssfilename"/>
</target>
</project>

```

Answer: 
If anyone else is coming to this question recently, as I did, they may find that the `less-rhino-1.1.3.js` file given in the other answers does not work with the latest version of Rhino (which for me, as of now, is `1.7R4` from [MDN](https://developer.mozilla.org/en-US/docs/Rhino/Download_Rhino)). But the `1.4.0` version does, which can be obtained from [Github here](https://github.com/less/less.js/tree/master/dist). So the relevant snippet from my `build.xml`, using these later versions, is shown. Note that I'm only compiling a single `.less` file to a single `.css` file, so no iteration or mappers are used (but obviously you can get those from the other answers). Other tweaks I made were to provide the output file as the final arg to `less` instead of capturing output from the Ant forked process, and to remove the dependency on `ant-contrib` stuff (not needed for the simple one-file case).

```
<property name="tool.rhino" value="build/lesscss/rhino1_7R4/js.jar" />
<property name="tool.less" value="build/lesscss/less-rhino-1.4.0.js" />
<property name="single-input-lesscss-file" value="/path/to/my/style.less" />
<property name="single-output-css-file" value="/output/my/style.css" />

<target name="compileLessCss" description="Compile the single less file to css">
    <sequential>
        <java jar="${tool.rhino}" fork="true">
            <arg path="${tool.less}" />
            <arg path="${single-input-lesscss-file}" />
            <arg path="${single-output-css-file}" />
        </java>
    </sequential>
</target>

```
If maven is an option for you, you could try [wro4j-maven-plugin](http://code.google.com/p/wro4j/wiki/MavenPlugin) or [wro4j-runner](http://code.google.com/p/wro4j/wiki/wro4jRunner) (which is a command line utility).

Using one of these, all you have do is to create an resource model descriptor (wro.xml):

```
<groups xmlns="http://www.isdc.ro/wro">
  <group name="g1">
    <css>/path/to/*.less</css>
  </group>
</groups>

```

The rest will be handled by the wro4j library. No need to carry about how rhino works or other details.

Disclaimer: I'm working on wro4j project