2010-06-21 7 views
0

J'essaie d'exécuter iisvdir à partir d'un script ant pour nettoyer et créer un répertoire virtuel avant de compiler mon application .net dans Visual Studio. Je cours dans quelques erreurs étranges un serveur de construction, mais un autre exécute le script sans n'importe quel problème.Aide de ligne de commande Ant: iisvdir

<exec dir="${SYSTEM32}" executable="cscript" failonerror="true"> 
     <arg line='iisvdir.vbs /create "Default Web Site" ${RS_VIRTUAL_DIR} "${env.WORKSPACE}"'/> 
    </exec> 

Résultats dans:

 [exec] Microsoft (R) Windows Script Host Version 5.6 
    [exec] Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. 
    [exec] 
    [exec] Input Error: Can not find script file "c:\windows\system32\iisvdir.vbs". 

Et puis

<exec dir="${SYSTEM32}" executable="cmd" failonerror="true"> 
     <arg line='cscript iisvdir.vbs /create "Default Web Site" ${RS_VIRTUAL_DIR} "${env.WORKSPACE}"'/> 
    </exec> 

Résultats dans

[exec] 'reate' is not recognized as an internal or external command, 
[exec] operable program or batch file. 

que quelqu'un peut me aider à comprendre ce qui pourrait être mauvais?

Répondre

0
  1. est-iisvdir.vbs où vous dites est
  2. ? pour obtenir cmd.exe pour exécuter une commande, vous devez utiliser le commutateur/C.

Par exemple:... ignore les paramètres et exécute une autre invite de commande interactive en tant que sous-shell.

cmd.exe /c echo Hello 

... exécute l'instruction "echo Hello" et renvoie immédiatement. Remarque: Vous pouvez utiliser/K si vous voulez que cmd.exe continue de s'exécuter interactivement après l'exécution de l'instruction (ce qui n'est généralement pas une bonne idée dans un script de construction).

Votre commande:

cmd.exe cscript iisvdir.vbs /create etc. 

... est analysé comme se si vous vraiment dit:

cmd.exe /c reat etc. 

En effet, cmd.exe a (comme avec la plupart des outils de ligne de commande MS) freaky ligne de commande analyse.

Mise à jour: Est-ce un système d'exploitation 64 bits? Si Ant est une tâche 32 bits, alors il cherchera (silencieusement) C:\Windows\SysWOW64 pour cscript.exe et iisvdir.vbs. Sont-ils là? Sinon, vous devez utiliser C:\Windows\SysNative. Dans une tâche 32 bits, il s'agit d'un alias dans le répertoire réel C:\Windows\System32.

+0

Oui, iisvdir est définitivement dans le dossier system32. Le problème avec le/c étant confondu comme un argument est exactement ce qui se passe. Et je ne peux pas trouver une solution de contournement pour exécuter ce dont j'ai besoin. Des pensées? – galuvian

+0

Il s'agit d'un système d'exploitation 64 bits, mais ma valeur par défaut est 32 bits. Je devrais également ajouter que je suis capable d'appeler "cmd cscript iisvdir.vbs" avec succès à/supprimer un ensemble de données, mais il étouffe sur/créer en raison de/c qui signifie quelque chose à cmd. – galuvian

+0

Oui, alors lancez 'cmd/c cscript iisvdir.vbs/create etc ...' –

0

Je ne sais pas si c'est la cause de vos problèmes mais je remarque que vous utilisez un guillemet simple (') pour < arg line ='. Tous les exemples que j'ai vus utilisent un guillemet double (") Je sais que vous mettez des éléments entre guillemets dans des guillemets doubles, donc il est peut-être nécessaire de les faire disparaître, peut-être de déplacer le code dans un fichier batch. Ant?

Je ne sais pas si cela vous aidera, mais pourrait vous orienter dans la bonne direction.

+0

Quand j'ai commencé à travailler sur mes scripts ant, j'avais beaucoup de commandes qui devaient avoir des guillemets dans la commande. J'ai trouvé que pour le script Ant lui-même, les guillemets simples ou doubles se comportent tous deux de la même manière. Cela me permet d'utiliser des guillemets simples dans le script XML lorsque j'ai besoin d'utiliser des guillemets dans la commande actuelle. – galuvian

+0

L'exécution de la commande iisvdir sur la ligne de commande fonctionne correctement. Le problème est de faire en sorte que Ant l'exécute correctement. Ce qui est frustrant, c'est que je travaille sur une autre machine de compilation, et j'essaie d'installer mes scripts sur une autre machine et je rencontre maintenant ce problème. Grr! – galuvian