2010-09-08 93 views
3

我有以下appcmd添加到IIS7的ISAPI和CGI限制的異常。我加入的異常應該是這樣的:爲什麼appcmd.exe在批處理文件中執行時行爲有所不同?

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

撕裂SF之間因此對於這一個。 – Kev 2010-09-08 10:31:20

回答

3

問題是命令處理器讀取您的"%s" %s並發現兩個標記%,因此這會生成一個有效的批處理變量(即%" %)。在將其擴展到無所有後,只有您的"s仍然存在。

您可以通過它加倍,這樣逃避在批處理文件中的單個% -sign:

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

謝謝弗蘭克。這讓我撓了撓頭。 – Kev 2010-09-08 12:10:11

相關問題