2012-11-30 4 views
0

La balise d'exécution ANT suivante ne se comporte pas comme prévu. Une fois exécuté, je m'attendrais à appeler text.cmd avec 1 argument. Cependant, l'argument est étendu à trois arguments distincts.ANT: utilisez "," dans <arg> sans extension à plusieurs arguments

Selon le manuel, la valeur est censée transmettre le contenu en tant qu'argument unique, mais elle est transmise en trois (un pour chaque composant de la chaîne séparé par une virgule).

J'ai essayé de remplacer la commande "," par un point-virgule (;) mais cela ne fonctionne pas non plus. Il semble que l'attribut value de l'argument analyse la chaîne fournie comme s'il s'agissait d'un chemin, ce qui n'est pas le cas.

Quelqu'un sait comment le "A, B, C" de passer en tant qu'un argument?

Par souci d'exhaustivité, mon dossier test.cmd est ceci:

@echo off 
echo Arg1: %1 
echo Arg2: %2 
echo Arg3: %3 
echo Arg4: %4 
echo Arg5: %5 
echo Arg6: %6 
echo Arg7: %7 
echo Arg8: %8 
echo Arg9: %9 

et la sortie de la construction fourmi est:

[exec] Arg1: A 
[exec] Arg2: B 
[exec] Arg3: C 
[exec] Arg4: 
[exec] Arg5: 
[exec] Arg6: 
[exec] Arg7: 
[exec] Arg8: 
[exec] Arg9: 

Répondre

2

Problème résolu. J'étais si concentré sur le problème étant dans la fourmi, que je n'ai pas pris le temps de tester comment DOS comme les lignes de commande interprètent les arguments de la ligne de commande.

de la ligne de commande Windows, j'ai exécuté test.cmd a, c, b et de voir que l'argument de commande a été divisé, par conséquent, le problème n'est pas lié à ant. alors maintenant je dois juste comprendre comment forcer ANT à citer les arguments.

+0

Pour tous ceux qui lisent ceci, placer les arguments entre guillemets en utilisant simplement le guillemet simple, afin que les guillemets doubles soient ignorés par l'analyseur xml et passés à la chaîne d'argument: value = '"some, text here"' – Armand

1

Essayez:

<exec executable="c:\scratch\test.cmd"> 
    <arg line="A,B,C"/> 
</exec> 

Voir fourmi manuel pour la description de comment fonctionne arguments.

+0

la propriété line = présente le même comportement que value = property. Je reçois toujours les arguments distinctement distincts dans mon script de test. – Armand

+0

Je suis très familier avec le contenu des manuels apache ant, et j'ai passé en revue les informations sur les arguments, ainsi que les pages de la tâche exec, essayant de localiser tout ce qui suggère que les virgules seront interprétées comme des délimiteurs de listes. en plusieurs arguments. Mais rien là-dedans à ce sujet. – Armand

Questions connexes