Warum verhält sich appcmd.exe anders, wenn es in einer Batchdatei ausgeführt wird?

Warum verhält sich appcmd.exe anders, wenn es in einer Batchdatei ausgeführt wird?

Ich appcmdmöchte eine Ausnahme zu den ISAPI- und CGI-Einschränkungen von IIS7 hinzufügen. Die Ausnahme, die ich hinzufüge, sollte folgendermaßen aussehen:

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

Hier ist die Befehlszeile:

appcmd set config -section:isapiCgiRestriction "-+[path='c:\perl\bin\perl.exe \"%s\" %s', allowed='true', description='Perl CGI']"

Wenn ich dies von der Befehlszeile aus ausführe, geschieht dies korrekt. Wenn ich dies jedoch in einer .cmdBatchdatei ausführe, wird der Pfad verstümmelt und sieht am Ende folgendermaßen aus:

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

Das Problem scheint aufzutreten, weil ich die Anführungszeichen um den ersten %sperl.exe-Parameter maskieren muss. Aber warum sich das in einer Batchdatei anders verhalten sollte, ist ein kleines Rätsel.

Kann jemand erklären, warum das passiert?

Antwort1

Windows-Batchvariablen sollten mit einem vorangestellt werden %, wodurch diese%%s

verwandte Informationen