【问题标题】:Why does appcmd.exe behave differently when executed inside a batch file?为什么 appcmd.exe 在批处理文件中执行时表现不同?
【发布时间】:2010-09-08 10:30:51
【问题描述】:

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

谁能解释为什么会这样?

【问题讨论】:

  • 这一个在 SF 和 SO 之间纠结。

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢弗兰克。这让我摸不着头脑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
相关资源
最近更新 更多