Почему appcmd.exe ведет себя по-другому при запуске внутри пакетного файла?

Почему appcmd.exe ведет себя по-другому при запуске внутри пакетного файла?

У меня есть следующее appcmd, чтобы добавить исключение к ограничениям ISAPI и CGI IIS7. Исключение, которое я добавляю, должно выглядеть так:

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

Вот командная строка:

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

Если выполнить это из командной строки, то все будет сделано правильно, однако если я выполню это внутри .cmdпакетного файла, путь будет искажен и в итоге будет выглядеть так:

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

Проблема, похоже, возникает из-за того, что мне приходится экранировать кавычки вокруг первого %sпараметра perl.exe. Но почему это должно вести себя по-другому в пакетном файле — это немного загадка.

Кто-нибудь может объяснить, почему это происходит?

решение1

Пакетные переменные Windows должны иметь префикс %, что делает их%%s

Связанный контент