2013-08-22 163 views
-1

我需要使用vb腳本的參數調用perl腳本。如果參數在其中包含空格,則不起作用。請幫助。謝謝。從vbscript調用perl腳本

Set oShell = CreateObject("WScript.Shell") 
sArgs = strArg1 
sExec = "perl test.pl" 
sCmd = sExec & " " & sArgs & " " 
oShell.Run(sCmd) 

回答

0

您可以通過將引號括在引號中來幫助shell標記命令。直接在外殼

運行,可能看起來像這樣的:

C:\> perl test.pl "C:/Path with spaces/foo.temp" 

至於你會怎麼做,在VBScript中,我們可以解決兩個步驟:escape literal quotes in a string,和use Replace() to format that string

sCmd = "perl test.pl ""{0}""" 
sCmd = Replace(sCmd, "{0}", sArgs) 
oShell.Run(sCmd) 

這裏假定sArgs只包含一個參數;如果你傳遞多個參數,你會想要將它們分別用引號括起來。

+0

在這裏使用'替換'是沒有意義的開銷。一個簡單的字符串連接就足夠了:'sCmd =「perl test.pl」「」&sArgs&「」「」' –

+0

我期望在性能上的差異可以忽略不計,但在我看來,可讀性和易維護性的差異不是。 – rutter

+0

如果您擔心可讀性,請使用引用函數('Function qq(str):qq = Chr(34)&str&Chr(34):End Function'),因此您可以像這樣進行連接:'' perl test.pl「&qq(sArgs)'。 –