2010-09-08 3 views
3

J'ai le appcmd suivant pour ajouter une exception aux restrictions ISAPI et CGI d'IIS7. L'exception que je suis d'ajouter devrait ressembler à:Pourquoi appcmd.exe se comporte-t-il différemment lorsqu'il est exécuté dans un fichier batch?

c:\perl\bin\perl.exe "%s" %s

Voici la ligne de commande:

appcmd set config -section:isapiCgiRestriction "-+[path='c:\perl\bin\perl.exe \"%s\" %s', allowed='true', description='Perl CGI']" 

Si exécuter ce à partir de la ligne de commande il le fait correctement, si j'exécuter ceci à l'intérieur d'un .cmd fichier batch le chemin se mutilée et finit par ressembler à:

c:\perl\bin\perl.exe "s

Le problème semble se poser parce que je dois échapper les guillemets autour du premier paramètre perl.exe %s. Mais pourquoi cela devrait se comporter différemment dans un fichier batch est un peu un casse-tête.

Quelqu'un peut-il expliquer pourquoi cela se produit?

+0

tiraillé entre SF et SO pour celui-ci. – Kev

Répondre

3

Le problème est que le processeur de commande lit votre "%s" %s et trouve deux signes %, ce qui en fait une variable de lot valide (à savoir %" %). Et après avoir étendu cela en rien, seul votre "s reste.

Vous pouvez échapper à un seul % --sign dans votre fichier de commandes en le doublant, comme celui-ci:

c:\perl\bin\perl.exe "%%s" %%s 
+0

Merci Frank. Cela m'a fait me gratter la tête depuis des lustres. – Kev

Questions connexes