
У меня есть следующее 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