9 Stimmen

Mit ant ein Verzeichnis umbenennen, ohne den vollständigen Pfad zu kennen?

Wie kann ich bei einer Zip-Datei mit einem unbekannten Verzeichnis dieses Verzeichnis umbenennen oder in einen normalisierten Pfad verschieben?

<!-- Going to fetch some stuff -->
<target name="get.remote">

    <!-- Get the zipfile -->
    <get src="http://myhost.com/package.zip"
         dest="package.zip"/>

    <!-- Unzip the file -->
    <unzip src="package.zip"
           dest="./"/>

    <!-- Now there is a package-3d28djh3 directory.  The part after package- is
         a hash and cannot be known ahead of time -->

    <!-- Remove the zipfile -->
    <delete file="package.zip"/>

    <!-- Now we need to rename "package-3d28djh3" to "package".  My best attempt
         is below, but it just moves package-3d28djh3 into package instead of
         renaming the directory. -->

    <!-- Make a new home for the contents. -->
    <mkdir dir="package" />

    <!-- Move the contents -->
    <move todir="package/">
      <fileset dir=".">
        <include name="package-*/*"/>
      </fileset>
    </move>

</target>

Ich bin kein großer Ameisenbenutzer, jeder Einblick wäre hilfreich.

Vielen Dank, -Matt

13voto

mamboking Punkte 4319

Dies funktioniert nur, solange das dirset nur 1 Element zurückgibt.

<project name="Test rename" basedir=".">

  <target name="rename">
    <path id="package_name">
      <dirset dir=".">
        <include name="package-*"/>
      </dirset>
    </path>
    <property name="pkg-name" refid="package_name" />
    <echo message="renaming ${pkg-name} to package" />
    <move file="${pkg-name}" tofile="package" />
  </target>

</project>

2voto

pitpod Punkte 369

Wenn es keine Unterverzeichnisse innerhalb des Verzeichnisses package-3d28djh3 (oder wie auch immer es nach dem Entpacken genannt wird) gibt, können Sie

<move todir="package" flatten="true" />
  <fileset dir=".">
    <include name="package-*/*"/>
  </fileset>
</move>

Andernfalls verwenden Sie den Regexp-Mapper für die Verschiebeaufgabe und werden das Verzeichnis package-xxx los:

<move todir="package">
  <fileset dir=".">
    <include name="package-*/*"/>
  </fileset>
  <mapper type="regexp" from="^package-.*/(.*)" to="\1"/>
</move>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X