2010-12-13 20 views
3

Antターゲット内で解凍する必要があるいくつかのzipファイルがあります。すべてのzipファイルは同じディレクトリにあり、同じ内部ディレクトリとファイル構造を持っています。Ant Zip Extracted親ディレクトリ

ディレクトリ内のすべてのzipファイルを解凍するには、次のスニペットを使用しますが、各zipファイルにはルートに親フォルダが含まれていないため、それぞれのzipファイルは解凍され、前のファイルを上書きします。

<unzip dest="C:/Program Files/Samsung/Samsung TV Apps SDK/Apps">    
    <fileset dir="."> 
     <include name="**/*.zip"/> 
    </fileset> 
</unzip> 

zipファイル名に基づいてファイルのグループを解凍し、そしてそれにそれらを解凍するためのディレクトリを作成するための良い方法はありますか?

ので、zipファイルがある場合:

1.zip 
2.zip 
3.zip 

は、各の内容はに抽出されます。

1/ 
2/ 
3/ 

おかげ

答えて

4

一つの解決策は、ant-contrib 'を使用するかもしれませんforおよび 'propertyregex'タスクでこれを行う:

<for param="my.zip"> 
    <fileset dir="." includes="**/*.zip" /> 
    <sequential> 
    <propertyregex property="my.zip.dir" 
       input="@{my.zip}" 
       regexp="(.*)\..*" 
       select="\1" 
       override="yes" /> 
    <unzip src="@{my.zip}" dest="${my.zip.dir}" /> 
    </sequential> 
</for> 

'propertyregex'は、zipファイル名から.zip拡張子を削除して、ターゲットディレクトリ名として使用します。 ANT-contribのなし

+0

いや、それは私が一緒に行くことになったものです。私はant-contribを使う必要がないことを望んでいましたが、この場合、おそらく最も簡単な方法です。 – Steve

-1

https://stackoverflow.com/a/12169523/957081

<!-- Get the path of the war file. I know the file name pattern in this case --> 
<path id="warFilePath"> 
    <fileset dir="./tomcat/webapps/"> 
     <include name="myApp-*.war"/> 
    </fileset> 
</path> 

<property name="warFile" refid="warFilePath" /> 

<!-- Get file name without extension --> 
<basename property="warFilename" file="${warFile}" suffix=".war" /> 

<!-- Create directory with the same name as the war file name --> 
<mkdir dir="./tomcat/webapps/${warFilename}" /> 

<!-- unzip war file --> 
<unwar dest="./tomcat/webapps/${warFilename}"> 
    <fileset dir="./tomcat/webapps/"> 
     <include name="${warFilename}.war"/>  
    </fileset> 
</unwar> 
+0

このソリューションは、warFilePathが正確に1つのファイルを参照する場合にのみ機能します。 OPはいくつかのファイルを抽出する方法を尋ねた。 –

関連する問題