ファイルセットをファイルに印刷するには、1 行に 1 つのファイル名を印刷するにはどうすればよいでしょうか? 質問する

ファイルセットをファイルに印刷するには、1 行に 1 つのファイル名を印刷するにはどうすればよいでしょうか? 質問する

ファイルセットが既に作成されており、一致するファイル名をテキスト ファイルに出力する必要があります。

私はこれを試しました:

<fileset id="myfileset" dir="../sounds">
    <include name="*.wav" />
    <include name="*.ogg" />
</fileset>

<property name="sounds" refid="myfileset" />
<echo file="sounds.txt">${sounds}</echo>

これは、すべてのファイルをセミコロンで区切って 1 行に出力します。1 行に 1 つのファイルが必要です。OS コマンドを呼び出したり Java コードを記述したりせずに、これを実行するにはどうすればよいですか?

アップデート:

ああ、もっと具体的にすべきだった。リストにはディレクトリが含まれていてはいけない。とにかく、ChssPly76の回答を承認された回答としてマークする。パス変換コマンドはまさに私が欠けていたものでした。ディレクトリを削除してファイル名だけをリストするには、「フラット化」マッパー

最終的に作成したスクリプトは次のとおりです。

<fileset id="sounds_fileset" dir="../sound">
    <include name="*.wav" />
    <include name="*.ogg" />
</fileset>

<pathconvert pathsep="&#xA;" property="sounds" refid="sounds_fileset">
    <mapper type="flatten" />
</pathconvert>

<echo file="sounds.txt">${sounds}</echo>

ベストアンサー1

使用パス変換タスク:

<fileset id="myfileset" dir="../sounds">
    <include name="*.wav" />
    <include name="*.ogg" />
</fileset>

<pathconvert pathsep="${line.separator}" property="sounds" refid="myfileset">
    <!-- Add this if you want the path stripped -->
    <mapper>
        <flattenmapper />
    </mapper>
</pathconvert>
<echo file="sounds.txt">${sounds}</echo>

おすすめ記事