2013-03-29 148 views
2

對於如何重命名目錄有一系列的答案,但他們都需要知道確切的目錄名稱。在我的情況下,名稱是動態生成的。我想要做這樣的事情,但這種失敗,因爲我不能通配符源目錄:在Ant中重命名一個動態命名的目錄?

<copy todir="./some/runtime/directory/mydir"> 
    <fileset dir="some/build/dir/mydir*"/> <!-- name is mydir_<timestamp> --> 
</copy> 

在bash,我可以做mv some/build/dir/mydir* some/runtime/dir/mydir。我試圖找到等價的ant命令。

回答

1

如果將足以複製目錄的內容,那麼就清理你的build文件夾,你可以試試這個:

<copy todir="./some/runtime/directory/mydir"> 
    <fileset dir="some/build/dir"> 
     <include name="**/mydir*/**/*" /> <!-- or just mydir/**/* --> 
    </fileset> 
</copy> 
+0

我試過了,但它複製導演y,所以我得到/ some/runtime/directory/mydir/mydir_

1

我創建了一個屬性,然後再複製的: -

<dirset id="my-dir-set" 
     dir="some/build/dir" includes="mydir*"/> 
<property name="my-dir-name" refid="my-dir-set" /> 
<fail message="Must have exactly one directory - ${my-dir-name}"> 
    <condition> 
     <resourcecount refid="my-dir-set" count="1" when="ne" /> 
    </condition> 
</fail> 
<move file="${my-dir-name}" 
     tofile="./some/runtime/directory/mydir" /> 

雖然,如果你可以保證dirset是唯一的沒有測試: -

<move tofile="./some/runtime/directory/mydir"> 
    <dirset dir="some/build/dir" includes="mydir*" /> 
</move>