2012-07-18 83 views
3

我有一个由供应商提供的并且需要一系列参数的perl脚本。我想通过ASP经典中的Windows Shell对象调用它。在Windows Shell中传递给perl脚本的转义参数

如果我输入的Web服务器上的CMD线以下,它工作得很好:

path_to_perl\perl.exe path_to_pl\myfile.pl --arg1 "something" --arg2 "somethingelse" 

如果我下面的ASP经典,这是行不通的:

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) 

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

+0

你为什么使用'cmd.exe/c'? – Neil 2012-07-18 23:47:31

+0

这就是我以前运行perl脚本的方式。请注意,如果strCMD没有任何参数,代码工作得很好。 – user1536330 2012-07-19 02:19:28

+0

此外,“”“”“”“”和“”别的东西“”中的特殊字符遍布整个地方 - $,/,\,@等。 – user1536330 2012-07-19 02:32:56

回答

0

Shoulf直接调用Perl,像这样:

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

见这里的讨论:How to call perl programs from ASP page
和aspecially的查尔斯K.克拉克森的答案在这里。

这将简化问题,因为您不需要同时处理ASP,CMD和Perl的转义字符

(在该讨论中,问题是Perl脚本中的语法错误,最终,
,但它仍然显示如何在ASP中对其进行编码)。

相关问题