2012-12-05 29 views
0

我有一個文件集,其中包含擴展名爲10的文件。然後我需要把這個文件名和擴展名分成2個獨立的屬性/變量,但不知道如何。我需要做這個文件的原因是在Unix上作爲XB12345.FILE開始,我需要移動到文件名爲XB12345.FILE和成員爲FILE.MBR的I/5系統。大多數文件沒有一致的擴展名,只會在運行時才知道。任何幫助,將不勝感激。Ant腳本將文件名和擴展名拆分爲2個單獨的屬性

回答

4

這聽起來像是Ant-Contrib任務的工作。

Ant-Contrib任務已經存在了很長時間,在Ant項目中很常見。 PropertyRegex任務將完成你想要的任務。事實上,甚至有一個可以處理循環的For任務。

<PropertyRegEx>任務將是這個樣子:

  • 下載ant-contrib-1.0b3.jar

    <propertyregex property="base.name" 
        input="file.name" 
        regexp="(.*)\.(.*)" 
        select="\1"/> 
    
    <propertyregex property="suffix.name" 
        input="file.name" 
        regexp="(.*)\.(.*)" 
        select="\2"/> 
    

    安裝螞蟻的Contrib任務,如果您按照這些步驟是相當容易的。

  • 在項目的根目錄創建一個名爲antlib/ac的目錄。
  • ant-contrib-1.0b3.jar file in the antlib/ac`目錄。
  • 添加任務定義。

像這樣:

<taskdef resource="net/sf/antcontrib/antlib.xml"> 
    <classpath> 
     <fileset dir="${basedir}/antlib/ac"/> 
    <classpath> 
</taskdef> 

如果你使用版本控制系統,檢查螞蟻的contrib-1.0b3.jar文件到該項目中的版本控制系統。現在,當有人需要做一個構建時,他們簽出你的項目,並且Ant Contrib任務已經被定義,並且Ant-Contrib jar在那裏。開發人員不需要安裝Ant-Contrib。你的構建正常。

+0

感謝大衛,我已經使用ant-contrib和for循環它應該完美地爲我需要的工作。只是不確定是否正則表達式是否與此一致,或者是否有另一個我缺少的任務。 – colbype

+0

你可以直接寫 gouessej

+0

請將「regex」替換爲「regexp」,請參閱http://ant-contrib.sourceforge.net/ant-contrib/manual/tasks/propertyregex.html – gouessej

0

儘管propertyregex是預期問題的解決方案,但您必須使用override屬性來解決您的問題。

<propertyregex property="base.name" 
    input="file.name" 
    regexp="(.*)\.(.*)" 
    select="\1" override="true"/> 

<propertyregex property="suffix.name" 
    input="file.name" 
    regexp="(.*)\.(.*)" 
    select="\2" override="true"/> 
相關問題