¿Por qué appcmd.exe se comporta de manera diferente cuando se ejecuta dentro de un archivo por lotes?

¿Por qué appcmd.exe se comporta de manera diferente cuando se ejecuta dentro de un archivo por lotes?

Tengo lo siguiente appcmdpara agregar una excepción a las restricciones ISAPI y CGI de IIS7. La excepción que estoy agregando debería verse así:

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

Aquí está la línea de comando:

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

Si ejecuto esto desde la línea de comando, lo hace correctamente; sin embargo, si ejecuto esto dentro de un .cmdarchivo por lotes, la ruta se altera y termina luciendo así:

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

El problema parece surgir porque tengo que evitar las comillas alrededor del primer %sparámetro perl.exe. Pero por qué esto debería comportarse de manera diferente en un archivo por lotes es un misterio.

¿Puede alguien explicar por qué ocurre esto?

Respuesta1

Las variables por lotes de Windows deben tener el prefijo %, lo que las hace%%s

información relacionada