国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

vbScript中WScript.Shell對象的run和exec使用心得分享

2019-10-26 18:02:08
字體:
來源:轉載
供稿:網友

Set exeRs = objws.Exec("pscp -r -scp -pw " & password & " " & loginid & "@" & host & ":" & data_path & fileName & " " & windows_path)
但在測試的時候,當拷貝的文件比較大,拷貝時間較長的時候就出現cmd窗口死在那里不動了的情況,直接在cmd窗口中運行pscp拷貝相同的文件就可以正常 結束。也找不到是什么原因,于是改成run方法試一下,結果run方法是可以正常結束的,但是原來的代碼中有需要取得cmd的控制臺輸出信息,而run卻 不方便取得控制臺信息,最后只能先把控制臺信息重定向到文件中,然后程序在讀取。最后說一下對run和exec兩個方法的區別的一些理解:

這兩個方法的聲明如下
Function Exec(ByVal Command As String) As WshExec

Function Run(ByVal Command As String, [ByVal WindowStyle], [ByVal WaitOnReturn]) As Integer

可以看出幾點區別:

1,run的返回值是一個整數,就是0或1成功和失敗兩個狀態,而exec方法的返回值是一個對象,從返回對象中可以獲得控制臺輸出信息和控制臺錯誤信息,即StdOut和StdErr屬性等。例如:

Set exeRs = objws.Exec("pscp -r -scp -pw 。。。。"

errMsg = exeRs.StdErr.ReadAll()

stdMsg = oExec.StdOut.ReadAll()

可以取道控制臺錯誤和控制臺信息。
2,Run 的后兩個參數,一個是cmd窗口的風格,一個是是否等待執行完成。最后一個參數很有用,如果你希望等待本次cmd執行的程序結束后,在執行 objws.Exec后面的語句的話,只要設置這個參數為true就可以了,否則后面的語句將不等待cmd窗口完成,直接運行(我們項目就有這個需求,從服務器上拷貝一個文件到本地后,馬上要打開這個文件操作,如果文件沒有拷貝完就去操作就會出錯的。)。另外,如果你使用exec 方法的時候,如果希望等待cmd中程序執行完后,在執行后面的語句,也可以通過下面的方法:

oExec.StdErr.ReadAll()或者oExec.StdOut.ReadAll(),道理上也應該好理解,要得到輸出的信息,肯定要cmd執行完后才會有輸出的。

參數的詳細信息可以參考msdn

http://msdn.microsoft.com/zh-cn/library/ateytk4a(en-us,VS.85).aspx

http://msdn.microsoft.com/zh-cn/library/d5fk67ky(en-us,VS.85).aspx

您可能感興趣的文章:

VBS中Run和Exec的區別
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 武清区| 读书| 阳曲县| 丰宁| 吕梁市| 萨迦县| 吴川市| 乃东县| 织金县| 大同市| 宣威市| 青神县| 禹城市| 武安市| 隆子县| 涪陵区| 盘山县| 拜城县| 龙门县| 达拉特旗| 新津县| 武鸣县| 布尔津县| 阿勒泰市| 嘉义市| 睢宁县| 太康县| 弥渡县| 北流市| 枣阳市| 南城县| 卢氏县| 南康市| 钟祥市| 香港| 钦州市| 于田县| 将乐县| 黄冈市| 长沙县| 霍州市|