2010-12-15 97 views
0

Je voudrais placer des scripts Scala dans un fichier batch. Si vous imprimez simplement les arguments, la manière canonique serait comme ceci:Passage des arguments avec des parenthèses au script Scala contenu dans le fichier de commandes Windows

::#! 
@echo off 
scala %0 %* 
goto :eof 
::!# 
args foreach println 

(Cela appelle en fait un autre script batch, scala.bat du bac-répertoire de Scala). Si je tente de passer un argument contenant entre parenthèses à elle, les fenêtres interpréteur de ligne de commande se plaint d'une erreur de syntaxe:

printargs.bat "foo(bar)baz" 

Étrangement, si je crée un fichier scala printargs.scala contenant juste args foreach println, cela fonctionne correctement:

scala printargs.scala "foo(bar)baz" 

Donc je suppose que ce n'est pas un bug dans scala.bat. Mais qu'est-ce que je peux faire?

Mise à jour: l'erreur réelle se produit dans la ligne suivante dans scala.bat:

set _ARGS=%* 

avec le message d'erreur

baz was unexpected at this time 

Si je change scala.bat qu'il n'utilise pas une variable locale, mais utilisez% * directement, cela fonctionne correctement. Donc, je filed a bug-report. La question demeure s'il existe une solution de contournement pour ce problème jusqu'à ce que le bogue soit résolu.

+0

Vous devez ajouter le code de scala.bat, afin que nous puissions voir le problème – jeb

+1

S'il vous plaît envoyer le message d'erreur –

+0

'D: \ Télécharger> printargs foo (bar) baz' => ' baz était inattendu pour le moment. 'Il n'y a pas d'erreur quand j'ai "foo (bar) baz" entre guillemets. , le vrai dans le répertoire bin/Scala, il semble être lié au caractère paren ')' de fermeture. – frayser

Répondre

0

Ce bug ne se produit pas dans scala 2.8.1.final. Je suggère d'utiliser cette version à la place.

+0

C'était la version que j'utilise. Curieusement, quand j'ai juste essayé à nouveau cela a fonctionné correctement - aucune idée pourquoi. 8- {Mais il semble au moins Frayser dans les commentaires à la question pourrait également reproduire le problème. –

0

Je ne pense pas que cela ait quelque chose à voir avec Scala .. J'ai actuellement le même problème avec le passage d'un argument qui contient des parenthèses dans une commande grails. Apparemment, c'est un problème avec le shell Windows, ont essayé d'échapper les caractères "(" mais cela ne fonctionne pas:/

+0

Oui, le shell Windows est au-delà de cassé. Mais comme mentionné dans la question, scala pourrait utiliser une solution de contournement dans scala.bat telle qu'elle fonctionnerait correctement. Peut-être que les grails pourraient aussi changer le script de départ. –