Asp.net 转义在Windows Shell中传递给perl脚本的参数

Asp.net 转义在Windows Shell中传递给perl脚本的参数,asp.net,perl,escaping,windows-shell,Asp.net,Perl,Escaping,Windows Shell,我有一个由供应商提供的perl脚本,它接受一系列参数。我想通过ASP classic中的Windows Shell对象来调用它 如果我在web服务器上的cmd行中键入以下命令,它就可以正常工作: path_to_perl\perl.exe path_to_pl\myfile.pl --arg1 "something" --arg2 "somethingelse" 如果我在ASP classic中执行以下操作,它将不起作用: strCMD = "path_to_perl\perl.exe pat

我有一个由供应商提供的perl脚本,它接受一系列参数。我想通过ASP classic中的Windows Shell对象来调用它

如果我在web服务器上的cmd行中键入以下命令,它就可以正常工作:

path_to_perl\perl.exe path_to_pl\myfile.pl --arg1 "something" --arg2 "somethingelse"
如果我在ASP classic中执行以下操作,它将不起作用:

strCMD = "path_to_perl\perl.exe path_to_pl\myfile.pl --arg1 ""something"" --arg2  ""somethingelse"""
Set objWShell = CreateObject("WScript.Shell")
Set objCmd = objWShell.Exec("cmd.exe /c " & strCMD)

问题是这个论点有各种特殊的特征,所以我需要引用它们。我读过关于如何逃避它们的相互矛盾的信息——通过插入符号或反斜杠。任何帮助都将不胜感激

应该直接调用Perl,如下所示:

system_call_test( 'c:/complete/path_to_pl/myfile.pl --arg1 "something" ... ' )
请参见此处的讨论:
特别是查尔斯·K·克拉克森的回答

这将简化问题,因为您不必处理转义字符
对于ASP、CMD和Perl,所有这些都是同时进行的

(在那次讨论中,问题是Perl脚本的语法错误,

但是它仍然显示了如何在ASP中对其进行编码。

为什么要使用
cmd.exe/c
?这就是我以前运行perl脚本的方式。请注意,如果strCMD没有任何参数,则代码工作正常。此外,“something”和“something other”中的特殊字符到处都是-$,/,\,@,等等。