-1
我需要使用vb腳本的參數調用perl腳本。如果參數在其中包含空格,則不起作用。請幫助。謝謝。從vbscript調用perl腳本
Set oShell = CreateObject("WScript.Shell")
sArgs = strArg1
sExec = "perl test.pl"
sCmd = sExec & " " & sArgs & " "
oShell.Run(sCmd)
我需要使用vb腳本的參數調用perl腳本。如果參數在其中包含空格,則不起作用。請幫助。謝謝。從vbscript調用perl腳本
Set oShell = CreateObject("WScript.Shell")
sArgs = strArg1
sExec = "perl test.pl"
sCmd = sExec & " " & sArgs & " "
oShell.Run(sCmd)
您可以通過將引號括在引號中來幫助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
只包含一個參數;如果你傳遞多個參數,你會想要將它們分別用引號括起來。
在這裏使用'替換'是沒有意義的開銷。一個簡單的字符串連接就足夠了:'sCmd =「perl test.pl」「」&sArgs&「」「」' –
我期望在性能上的差異可以忽略不計,但在我看來,可讀性和易維護性的差異不是。 – rutter
如果您擔心可讀性,請使用引用函數('Function qq(str):qq = Chr(34)&str&Chr(34):End Function'),因此您可以像這樣進行連接:'' perl test.pl「&qq(sArgs)'。 –