Por que o appcmd.exe se comporta de maneira diferente quando executado dentro de um arquivo em lote?

Por que o appcmd.exe se comporta de maneira diferente quando executado dentro de um arquivo em lote?

Tenho o seguinte appcmdpara adicionar uma exceção às restrições ISAPI e CGI do IIS7. A exceção que estou adicionando deve ser semelhante a:

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

Aqui está a linha de comando:

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

Se executar isso na linha de comando, ele fará isso corretamente, no entanto, se eu executar isso dentro de um .cmdarquivo em lote, o caminho será confuso e ficará parecido com:

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

O problema parece surgir porque tenho que escapar das aspas em torno do primeiro %sparâmetro perl.exe. Mas por que isso deveria se comportar de maneira diferente em um arquivo em lote é um pouco confuso.

Alguém pode explicar por que isso está acontecendo?

Responder1

Variáveis ​​em lote do Windows devem ser prefixadas com um %, tornando-as%%s

informação relacionada