2012-07-18 81 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中對其進行編碼)。

相關問題