我有以下appcmd
为IIS7的ISAPI和CGI限制添加例外。我添加的例外应该如下:
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参数周围的引号。但是为什么在批处理文件中这应该有不同的行为是一个难题。
任何人都可以解释为什么会这样吗?
答案 0 :(得分:3)
问题是命令处理器会读取您的"%s" %s
并找到两个mathing %
符号,因此这会生成一个有效的批处理变量(即%" %
)。在将其扩展为无效之后,只剩下"s
。
您可以通过将批量文件加倍来转义批处理文件中的单个%
- 符号,如下所示:
c:\perl\bin\perl.exe "%%s" %%s