12
votes

Ant - Copier uniquement le fichier non annuaire

J'ai besoin de copier tous les fichiers d'un dossier, à l'exception du répertoire dans ce dossier à l'aide du script ANT.

IM en utilisant ci-dessous le script pour le faire. P>

<copy todir="targetsir">
  <fileset dir="srcdir">
     <include name="**/*.*"/>
  </fileset>
</copy>

ant

0 commentaires

7 Réponses :


10
votes

Voulez-vous dire que srcdir sous-répertoires de conatins, et vous ne souhaitez pas les copier, vous voulez simplement copier les fichiers un niveau en dessous srcdir ? xxx

qui devrait fonctionner. Le " ** / *. * " Dans votre question signifie "chaque fichier sous chaque sous-répertoire". Il suffit d'utiliser " * " correspondra simplement aux fichiers sous SRCDIR, non sous-répertoires.

édité pour exclure la création de sous-répertoires vides. < / p>


1 commentaires

Le * en soi crée des sous-répertoires vides. Je ne considérerais pas que le comportement attendu. Je considérerais que la solution de pavel ci-dessous est la bonne.



1
votes

pouvez-vous essayer xxx

** est utilisé pour correspondre à une structure de répertoire.


0 commentaires

-1
votes

Le secret consiste à utiliser pas de fichier de fichiers mais différent à la place.


1 commentaires

Je suppose que d'être plus explicite sur ce que vous voulez dire ici serait bénéfique



1
votes
<copy todir="targetsir" includeEmptyDirs="false"> 
  <fileset dir="srcdir"> 
     <include name="*"/> 
  </fileset> 
</copy>

0 commentaires

7
votes

Je n'ai pas assez de réputation pour commenter, alors j'écris un nouveau post ici. Les deux solutions pour inclure nom = "*" ou nom = "*. *" fonctionne bien en général, mais aucun d'entre eux n'est exactement ce que vous pourriez vous attendre.

Le premier crée des répertoires vides présents dans le répertoire source, car * correspond également au nom du répertoire. *. * fonctionne surtout parce qu'une convention que les fichiers ont une extension et des répertoires non, mais si vous nommez votre répertoire my.dir , ce générique créera un répertoire vide avec ce nom De plus.

Pour le faire correctement, vous pouvez exploiter le sélecteur accepte: < Pré> xxx


0 commentaires

25
votes

Je pense qu'il y a un moyen plus facile.

aplatin = "vrai" - Ignorer la structure de répertoire du répertoire de source, copiez tous les fichiers dans un répertoire unique, spécifié par l'attribut TODIR. La valeur par défaut est false .


1 commentaires

Cette question était très difficile à mettre en mots. Votre réponse était juste sur la page des fourmis qui me regardait. Merci gentiment pour ça!



0
votes

Si votre dossier a de nombreux sous-répertoires et que vous ne voulez pas qu'ils soient copiés (si vous voulez uniquement des fichiers), essayez ceci ..

<target name="copy">
<copy todir="out" flatten="true">
<fileset dir="tn">
<filename name="**/cit.txt" />
</fileset>
</copy>
</target>


1 commentaires

Par défaut, Flatten est défini sur "False"