ant如何检查驱动器D是否存在

How can ant check if drive D exists

我想复制一些文件到D盘,但是在测试环境下只有C盘,所以我想添加条件先检查是否有D盘,否则复制文件到C。

<if>
                <available file="D:\" />
                <then>
                    <copy todir="D:shared/CountrySettings" overwrite="true">
                        <fileset dir="${dist.CountrySettings.dir}/cfg" />
                    </copy>
                </then>
                <else>
                    <copy todir="C:shared/CountrySettings" overwrite="true">
                        <fileset dir="${dist.CountrySettings.dir}/cfg" />
                    </copy>
                </else>
            </if>

好像不对,请问如何解决?

看来主要问题是您缺少目标目录中的第一个斜杠。 D:shared/CountrySettings 应该是 D:/shared/CountrySettings(或者 D:\shared\CountrySettings 因为你在 Windows)。

我还强烈建议尽可能使用原生 Ant 的 condition 任务,而不是 ant-contrib 的 if/else 功能。

    <condition property="dest.dir" value="D:\shared\CountrySettings" else="C:\shared\CountrySettings">
        <available file="D:\" />
    </condition>

    <copy todir="${dest.dir}" overwrite="true">
        <fileset dir="${dist.CountrySettings.dir}/cfg" />
    </copy>