为什么appcmd.exe在批处理文件中执行时表现不同?

时间:2010-09-08 10:30:51

标签: windows scripting iis-7 batch-file iis-7.5

我有以下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参数周围的引号。但是为什么在批处理文件中这应该有不同的行为是一个难题。

任何人都可以解释为什么会这样吗?

1 个答案:

答案 0 :(得分:3)

问题是命令处理器会读取您的"%s" %s并找到两个mathing %符号,因此这会生成一个有效的批处理变量(即%" %)。在将其扩展为无效之后,只剩下"s

您可以通过将批量文件加倍来转义批处理文件中的单个% - 符号,如下所示:

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