我使用下面的腳本調用另一個腳本.The問題是,我要通過我的WScript.Arguments到第二腳本,我打電話。可有人檢索參數請告訴我該怎麼做。從另一個VBScript文件傳遞參數調用VBScript中
Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")
objShell.Run "TestScript.vbs"
Set objShell = Nothing
我使用下面的腳本調用另一個腳本.The問題是,我要通過我的WScript.Arguments到第二腳本,我打電話。可有人檢索參數請告訴我該怎麼做。從另一個VBScript文件傳遞參數調用VBScript中
Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")
objShell.Run "TestScript.vbs"
Set objShell = Nothing
你需要適當引用的參數來構建你的參數列表。您還需要區分命名參數和未命名參數。至少,所有含有空格的參數都必須放在雙引號之間。它沒有傷害,但是,簡單地引用的所有參數,所以你可以做這樣的事情:
Function qq(str)
qq = Chr(34) & str & Chr(34)
End Function
arglist = ""
With WScript.Arguments
For Each arg In .Named
arglist = arglist & " /" & arg & ":" & qq(.Named(arg))
Next
For Each arg In .Unnamed
arglist = arglist & " " & qq(arg)
Next
End With
CreateObject("WScript.Shell").Run "TestScript.vbs " & Trim(arglist), 0, True
用途:
objShell.Run "TestScript.vbs arg1 arg2"
如果其中一個參數包含空格,那麼你就需要在報價中嵌入這些,大概就是這個樣子:
objShell.Run "TestScript.vbs arg1 arg2 ""this is three"""
,或者它可以接受撇號(我最近沒有嘗試過)。
在我的第一個劇本我有這樣的語句設置objArgs = WScript.Arguments,我想通過這個objArgs作爲參數傳遞給下一script..It只是將objArgs作爲字符串傳遞給下一個腳本,而不是作爲具有值的對象。 – user505210
@ user505210 - 你不能傳遞對象作爲參數與.RUN或.Exec創建的進程;你必須發送所有想要的信息/轉換爲字符串(不要硬,因爲WScript.Arguments(.Named)是一個字符串列表)。 –
使用'.Run'時傳遞的參數基本上只是字符串,但不能通過這個簡單的命令行方法傳遞一個對象 - 事件,儘管接收腳本將它們存儲在一個對象中:參數。如果你真的想通過腳本之間的一個對象,你就必須序列化和從一個單獨的文件解序列他們 - 這是不是使用VBScript一個簡單的過程。我建議,與Ekkehard一樣,你只是將字符串/值傳遞給第二個腳本。 –
我找到了答案有點混亂,所以這裏是我的,這在我的腦海裏更簡單地顯示它。另一個答案沒有錯,只是不同(略)。
在Set shell = CreateObject("WScript.Shell")
shell.CurrentDirectory = "C:\some\path\"
x = "testing"
shell.Run "test1.vbs " & x
C:\some\path\test1.vbs
文件:
x = WScript.Arguments.Item(0)
msgbox x
所得從test.vbs文件消息框,傳遞給test1.vbs文件:
testing
超級cool..Thanks傢伙UR幫助 – user505210
我就行'statement'的'預計年底這個錯誤的arglist = arglist中和「」 QQ(ARG)',就在'QQ的第一個字符之前(ARG) ' – user
@user我的不好。 ''''''和'qq(arg)'之間應該有一個&符號。固定。 –