如何獲得一個vbscript來運行另一個vbscript?從另一個vbscript運行一個vbscript
我想象它只有幾行代碼,但沒有嘗試過這樣做,之間沒有任何東西被傳遞,只需要調用/運行其他。
例如,正在運行的腳本稱爲TestScript.vbs,它調用/運行的另一個腳本將被稱爲Secondscript.vbs,它們都位於C:\ Temp中。
感謝 馬克
如何獲得一個vbscript來運行另一個vbscript?從另一個vbscript運行一個vbscript
我想象它只有幾行代碼,但沒有嘗試過這樣做,之間沒有任何東西被傳遞,只需要調用/運行其他。
例如,正在運行的腳本稱爲TestScript.vbs,它調用/運行的另一個腳本將被稱爲Secondscript.vbs,它們都位於C:\ Temp中。
感謝 馬克
剛剛完成,你可以發送3個參數是這樣的:
objShell.Run "TestScript.vbs 42 ""an arg containing spaces"" foo"
謝謝,blairxy--那是我尋找的信息。 – Smandoli 2012-07-05 15:39:59
您也可以加載的身體腳本並在相同的過程中執行它:
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.OpenTextFile("script2.vbs")
body = ts.ReadAll
ts.Close
Execute body
如果你不想生氣,在參數空間,並希望使用變量試試這個:
objshell.run "cscript ""99 Writelog.vbs"" /r:" & r & " /f:""" & wscript.scriptname & """ /c:""" & c & ""
其中
r=123
c="Whatever comment you like"
由於Martin's Answer沒有工作在所有的我(「文件未找到」)和atesio's Answer不允許調用兩個腳本,其中包括重複變量定義,這裏是另一個替代最終爲我工作:
filepath = Chr(34) & "C:\...\helloworld.vbs" & Chr(34)
Set objshell= CreateObject("WScript.Shell")
objshell.Run "wscript " & filepath, , True
Set objshell= Nothing
(Windows 8.1)
我看到下面的代碼工作。 很簡單,但我想不記錄。 其他人使用'Execute'命令?
Dim body, my_script_file
Set Fso = CreateObject("Scripting.FileSystemObject")
Set my_script_file = fso.OpenTextFile(FILE)
body = my_script_file.ReadAll
my_script_file.Close
Execute body
您可以嘗試使用Wshshell.Run方法,讓你你開始使用它的過程中難以控制。或者你可以使用WshShell.Exec方法,這將給你控制終止它,得到的響應,更多參數傳遞(除命令行ARGS等),獲取狀態,和其他
要使用運行(簡單方法)
Dim ProgramPath, WshShell, ProgramArgs, WaitOnReturn,intWindowStyle
Set WshShell=CreateObject ("WScript.Shell")
ProgramPath="c:\test run script.vbs"
ProgramArgs="/hello /world"
intWindowStyle=1
WaitOnReturn=True
WshShell.Run Chr (34) & ProgramPath & Chr (34) & Space (1) & ProgramArgs,intWindowStyle, WaitOnReturn
ProgramPath是你的腳本要運行
ProgramArgs的完整路徑是要傳遞給腳本的參數。 (注意:參數用空格分隔,如果你想使用包含空格的參數,那麼你將不得不用引號將該參數括起來[安全的方法是使用CHR(34)示例ProgramArgs= chr (34) & "/Hello World" & chr (34)
])
IntWindowStyle是決定如何顯示窗口的整數。關於這個和WaitOnReturn的更多信息可以在這裏找到WshShell.Run Method
WaitOnReturn如果爲true,那麼腳本將暫停,直到命令終止,如果爲false,則腳本將在啓動命令後立即繼續。
注意:Run方法可以返回退出代碼,但必須將WaitOnReturn設置爲True,並將'WshShell.Run'分配給一個變量。 (EX:ExitCode=WshShell.Run (Command,intWindowStyle,True)
)
要使用EXEC(高級法)
Dim ProgramPath, WshShell, ProgramArgs, Process, ScriptEngine
Set WshShell=CreateObject ("WScript.Shell")
ProgramPath="c:\test run script.vbs"
ProgramArgs="/hello /world"
ScriptEngine="CScript.exe"
Set Process=WshShell.Exec (ScriptEngine & space (1) & Chr(34) & ProgramPath & Chr (34) & Space (1) & ProgramArgs)
Do While Process.Status=0
'Currently Waiting on the program to finish execution.
WScript.Sleep 300
Loop
ProgramPath一樣運行讀取運行的描述
ProgramArgs DITTO
的ScriptEngine您將使用的引擎用於執行腳本。由於exec方法需要一個win32應用程序,所以你需要指定這個。通常是「WScript.exe」或「CScript.exe」
進程這是引用腳本將啓動的程序的對象。它有幾個成員,它們是:ExitCode,ProcessID,Status,StdErr,StdIn,StdOut,Terminate。
更多詳細信息有關過程對象
Process.StdIn.WriteLine "Hello Other Worlds"
)Process.StdOut.ReadLine
如果沒有要讀腳本將掛在等待的輸出。這意味着腳本將顯示爲未響應有關WshShell.Exec更多信息,請Exec Method Windows Scripting Host
試試這個。
Option Explicit
On error resume next
Dim Shellobj
Set Shellobj = CreateObject("WScript.Shell")
Shellobj.Run "Test.vbs"
Set Shellobj = Nothing
你可以通過使用.bat – ukanth 2009-11-06 09:30:21
我知道它可以用a。蝙蝠,但沒有一種方法可以在實際的腳本中做到這一點? – markdigi 2009-11-06 10:26:27