转义传递给Windows Shell中的perl脚本的参数

时间:2012-07-18 23:15:07

标签: 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 path_to_pl\myfile.pl --arg1 ""something"" --arg2  ""somethingelse"""
Set objWShell = CreateObject("WScript.Shell")
Set objCmd = objWShell.Exec("cmd.exe /c " & strCMD)

问题是论证有各种特殊字符,所以我需要引用它们。我已经阅读了有关如何逃避它们的相互矛盾的信息 - 通过插入符号或反斜杠。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

Shoulf直接打电话给Perl,就像这样:

system_call_test( 'c:/complete/path_to_pl/myfile.pl --arg1 "something" ... ' )

请参阅此处的讨论: How to call perl programs from ASP page
特别是 Charles K. Clarkson 的答案。

它将简化问题,因为您不必处理转义符号 对于ASP,CMD和Perl - 所有这些都是在同一时间。

(在那次讨论中,问题是Perl脚本的语法错误,最终, 但它仍然显示如何在ASP中编写代码。