亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > VBScript > 正文

VBS中Run和Exec的區別

2020-06-26 17:40:46
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了VBS中Run和Exec的區別,需要的朋友可以參考下
 
Set ws = CreateObject("WScript.Shell")'這里創建一個對象引用,以便在以下示例代碼中使用。'Demon注:這個變量名怎么這么猥瑣(WS)

語法:(常識(Demon注:常識這個詞我喜歡):作為過程使用時,不要加括號,否則出現編譯器錯誤(參數唯一或沒有時加括號不會出錯,但建議不要加))

 

復制代碼代碼如下:

ws.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
[Set objExec =] ws.Exec(strCommand)

 

WScript.Shell對象的這兩個方法:

都可以用來運行程序,且可以帶參數。
都可以在程序路徑中使用環境變量。
都不能為程序指定工作目錄、不能設置優先級(start命令可以)。
要指定工作目錄,只能通過改變腳本宿主(wscript.exe/cscript.exe)的當前工作目錄:ws.CurrentDirectory = "工作目錄"。(常識:工作目錄有何意義:1、有些程序需要相應目錄下的dll等相關文件支持 2、相對路徑問題)

Run和Exec的區別:

1、Run可以直接運行文件(包括協議文件),會啟動相關聯的程序打開該文件(沒有關聯則出錯)。start有此功能(更高級,沒有關聯時會打開“打開方式”對話框)。Exec只能運行程序。

 

復制代碼代碼如下:

ws.Run "c:/boot.ini"
ws.Exec "notepad c:/boot.ini"

 

2、Run不僅可以直接運行位于path環境變量目錄中的程序,還能運行在注冊表App Paths中設置的程序“別名”。start有此功能。Exec不行,只能直接運行位于path環境變量目錄中的程序。

 

復制代碼代碼如下:

ws.Run "iexplore"
'iexplore 在 App Paths 中登記了別名。
ws.Exec "calc"

 

3、Run可以等待程序運行結束再執行下面的命令。start有此功能。Exec不行。

 

復制代碼代碼如下:

ws.Run "notepad", ,true

 

4、Exec運行的程序路徑中即使含有空格,也可以不加引號(參數如需引號,它的引號不能省略)。Run、start沒有這個本領。(常識:vbs中一個引號字符"本身要用兩個引號表示,即寫成""。也可以用Chr函數得到引號:chr(34))

 

復制代碼代碼如下:

ws.Exec "C:/Program Files/Internet Explorer/IEXPLORE.EXE"
ws.Exec """C:/Program Files/Internet Explorer/IEXPLORE.EXE"""
ws.Run  """C:/Program Files/Internet Explorer/IEXPLORE.EXE"""

 

5、最大的區別是:Run著重于啟動控制(設置窗口形式)。(start聽名字知道是為了啟動,也可以簡單設置窗口最大化、最小化。)Exec著重于后續控制,并著重于控制命令行程序。

run可以設置程序運行時的運行模式(前臺后臺:是否隱藏窗口)、窗口大小、激活狀態(是否獲取“焦點”),具體參數請參考手冊。
Exec在啟動程序后還能對其進行控制:獲取運行狀態、獲取PID、強行中止進程。如果運行的是命令行程序,還能提供對 StdIn/StdOut/StdErr 流的訪問:寫入執行命令、獲取命令輸出等。運行命令行程序后只能通過StdIn寫入命令,控制臺窗口不再接受用戶輸入。

 

復制代碼代碼如下:

ws.Run "notepad", 0
'隱藏窗口
ws.Run "notepad", 4
'運行后不激活,不打擾原來的活動窗口

 

注意,手冊上明確指出,Run不能約束所有程序都按它指定的窗口形式運行,有些程序不聽它的話,比如iexplore、calc等。運行ieplore時,它會奪取焦點成為活動窗口。Run無法以最小化運行calc。

 

復制代碼代碼如下:

Set oExec = ws.Exec("mspaint")
WScript.Echo oExec.ProcessId
oExec.Terminate
WScript.Echo oExec.Status '0為運行,1為結束
Set oExec = ws.Exec("ipconfig")
WScript.Echo oExec.StdOut.ReadAll

 

Exec的應用:

1、Runas自動輸入密碼:可能是設計時為安全考慮,runas不接收管道傳遞或從文件重定向得到,輸入密碼必須手動輸入,這個問題困擾了不少人,卻又難以解決,用Sendkeys也不一定穩妥(Demon注:我之前也說過很多次,用Sendkeys是不靠譜的,因為無法保證目標窗口一直獲得焦點,但是經常見到很多人用,真是不明真相的群眾,悲哀)。如果用Exec方法,就能輕松做到自動輸入。

 

復制代碼代碼如下:

Set ws = CreateObject("WScript.Shell")
Set oExec = ws.Exec("cmd.exe")
oexec.StdIn.WriteLine "runas /user:username setup.bat"
oexec.StdIn.WriteLine "password"

 

2、Exec與Run的結合使用:Exec方法無法隱藏窗口,要得到命令行程序的輸出,就會有一個黑呼呼的窗口一閃而過,不僅難看,還會讓其他使用者誤以為是木馬什么的,很不完美。如何解決這個問題呢?就讓Exec與Run合作吧!

 

復制代碼代碼如下:

Set ws = CreateObject("WScript.Shell")
host = WScript.FullName
'Demon注:這里不用這么復雜吧,LCase(Right(host, 11))不就行了
If LCase( right(host, len(host)-InStrRev(host,"/")) ) = "wscript.exe" Then
    ws.run "cscript """ & WScript.ScriptFullName & chr(34), 0
    WScript.Quit
End If
Set oexec = ws.Exec( "ipconfig")
Msgbox oExec.StdOut.ReadAll, , "ipconfig"
'此時不要用WScript.Echo,因為當前是在控制臺運行
'WScript.Echo的結果會在控制臺輸出,不會彈出對話框。

 

vbsRun方法

object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

【參數】
object 
WshShell 對象。 
strCommand 
表示要運行的命令行的字符串值。包括要傳遞到可執行文件的所有參數。 
intWindowStyle 
可選。表示程序窗口外觀的整數值。
請注意,并非所有程序都使用此信息。 
bWaitOnReturn 
可選。布爾值,表示在繼續執行腳本中的下一條語句之前,腳本是否等待執行完程序。
如果設為 true,則在執行完程序后才執行腳本,Run 方法返回由程序返回的任何錯誤代碼。
如果設為 false(默認值),則 Run 方法將自動在啟動程序后立即返回 0(不是錯誤代碼)。
 
【說明】
Run 方法返回一個整數。Run 方法啟動在新 Windows 進程中運行的程序。
可以讓腳本等到程序執行完后再繼續執行。這允許您同步運行腳本和程序。
strCommand 參數內的環境變量自動擴展。
如果某個文件類型已正確注冊到某個程序中,則對該類型的文件調用 Run 方法時將執行該程序。例如,如果您的計算機系統中裝有 Word,則對 *.doc 文件調用 Run 方法時將啟動 Word 并加載該文檔。
【intWindowStyle 說明 】
0 隱藏一個窗口并激活另一個窗口。 
1 激活并顯示窗口。如果窗口處于最小化或最大化狀態,則系統將其還原到原始大小和位置。第一次顯示該窗口時,應用程序應指定此標志。 
2 激活窗口并將其顯示為最小化窗口。 
3 激活窗口并將其顯示為最大化窗口。 
4 按最近的窗口大小和位置顯示窗口?;顒哟翱诒3只顒訝顟B。 
5 激活窗口并按當前的大小和位置顯示它。 
6 最小化指定的窗口,并按照 Z 順序激活下一個頂部窗口。 
7 將窗口顯示為最小化窗口?;顒哟翱诒3只顒訝顟B。 
8 將窗口顯示為當前狀態?;顒哟翱诒3只顒訝顟B。 
9 激活并顯示窗口。如果窗口處于最小化或最大化狀態,則系統將其還原到原始大小和位置。還原最小化窗口時,應用程序應指定此標志。 
10 根據啟動應用程序的程序狀態來設置顯示狀態。
 
【示例 1】

下面的 VBScript 代碼用記事本打開當前運行腳本的副本。

 

復制代碼代碼如下:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "%windir%/notepad " & WScript.ScriptFullName

 

下面的 VBScript 代碼與上述代碼完成的操作相同,不同之處在于,它指定窗口類型,等待用戶關閉記事本,關閉記事本時保存從記事本返回的錯誤代碼。
 

復制代碼代碼如下:

Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("notepad " & WScript.ScriptFullName, 1, true)

 

【示例 2】
下面的 VBScript 代碼打開一個命令窗口,將路徑改為 C:/,并執行 DIR 命令。

 

復制代碼代碼如下:

Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd /K CD C:/ & Dir"
Set oShell = Nothing

 

 

Run 方法:

Run方法有三個參數,
第一個參數是你要執行的程序的路徑,
第二個參數是窗口的形式,0后臺運行;1正常運行;2最小化;3最大化;缺省的話表示正常運行
第三個參數是表示這個腳本是等待還是繼續執行,如果設為了True,腳本就會等待調用的程序退出后再向后執行。

例1:

 

復制代碼代碼如下:

Set ws = CreateObject("WScript.Shell")
ws.Run "notepad",,True
ws.Run "iexplore"

 

例2:隱藏BAT執行窗口

復制代碼代碼如下:

Set ws = CreateObject("WScript.Shell")
ws.Run "x.bat",0

例3:
復制代碼代碼如下:

Set ws = CreateObject("WScript.Shell")
ws.Run "cmd /c netstat -an>>x.txt",0

例4:
復制代碼代碼如下:

Set ws = CreateObject("WScript.Shell")
ws.Run "taskkill /f /im iexplore.exe",0

 

Exec 方法


例1:運行文件

復制代碼代碼如下:

Set ws = CreateObject("WScript.Shell")
ws.Exec "notepad c:/x.txt" ‘對于Exec應指明程序,此notepad是必須的

例2:運行程序>獲取進程PID值>強行結束進程(沒有Run+taskkill強:如在記事本未保存的情況下結束進程,Exec會出錯,而Run不會)>判斷進程是否在運行(這個功能不錯)
復制代碼代碼如下:

Set ws = CreateObject("WScript.Shell")
Set e = ws.Exec("notepad")
MsgBox e.ProcessId
e.Terminate
WSH.Sleep 1000
MsgBox e.Status ‘0為運行,1為結束

例3:直接獲取dos命令輸出,dos窗口會閃一下,Exec沒有窗口控制功能
復制代碼代碼如下:

Set ws = CreateObject("WScript.Shell")
Set e = ws.Exec("ipconfig")
MsgBox e.Stdout.ReadAll

例4:
復制代碼代碼如下:

Set ws = CreateObject("WScript.Shell")
Set e = ws.Exec("cmd /c echo Hi")
MsgBox e.Stdout.ReadAll

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国产精品乱码不99按摩| 色综合视频一区中文字幕| 成人免费在线视频网站| 国产精品一久久香蕉国产线看观看| 91色视频在线导航| 欧美精品久久久久久久免费观看| 清纯唯美亚洲激情| 91九色综合久久| 成人两性免费视频| 亚洲日本欧美中文幕| 国产精品三级美女白浆呻吟| 91精品国产91久久久久久不卡| 伊人青青综合网站| 日韩av毛片网| 欧美色欧美亚洲高清在线视频| 最近2019年手机中文字幕| 国产精品视频xxx| 国产精品久久久久久久av电影| 久久亚洲精品国产亚洲老地址| 国产偷国产偷亚洲清高网站| 欧美精品激情视频| 91免费综合在线| 国精产品一区一区三区有限在线| 国产亚洲精品久久久| 成人在线播放av| 538国产精品一区二区在线| 国产精品黄视频| 97精品一区二区视频在线观看| 日韩美女毛茸茸| 国产精品香蕉av| 亚洲天堂开心观看| 亚洲一区二区中文| 欧美韩国理论所午夜片917电影| 九九热99久久久国产盗摄| 欧美成aaa人片在线观看蜜臀| 91中文在线视频| 亚洲四色影视在线观看| 国产精品午夜国产小视频| 97在线视频免费| 欧美大片大片在线播放| 亚洲网址你懂得| 成人在线中文字幕| 高清欧美性猛交xxxx黑人猛交| 在线电影欧美日韩一区二区私密| 久久精品国产一区| 久久天天躁狠狠躁老女人| 日韩成人性视频| 不用播放器成人网| 国内伊人久久久久久网站视频| 九九热精品视频| 国产激情久久久久| 亚洲国产精品一区二区久| 色综合久久天天综线观看| 国内精品一区二区三区四区| 国产精品最新在线观看| 国产午夜精品全部视频在线播放| 久青草国产97香蕉在线视频| 亚州精品天堂中文字幕| 成人网欧美在线视频| 日韩欧美aaa| 日韩有码在线电影| 国产精品久久久久久久7电影| 国产精品永久免费视频| 国产色视频一区| 欧美国产亚洲视频| 亚洲精品永久免费| 欧美在线激情视频| 91精品久久久久久久久久久久久久| 清纯唯美亚洲激情| 色婷婷**av毛片一区| 欧美大片在线免费观看| 国产ts一区二区| 精品国产鲁一鲁一区二区张丽| 国产精品久久久久一区二区| 色播久久人人爽人人爽人人片视av| 国产精品一区专区欧美日韩| 欧美精品精品精品精品免费| 午夜精品久久久久久久白皮肤| 中文字幕国产亚洲2019| 亚洲一区中文字幕| 国产精品久久久久久网站| 91影视免费在线观看| 亚洲天堂男人天堂| 亚洲最大av网| 成人情趣片在线观看免费| 亚洲国产精品一区二区三区| 久久99青青精品免费观看| 最近中文字幕2019免费| 久久精品在线视频| 久久人人爽人人爽人人片亚洲| 日韩在线免费视频观看| 在线日韩日本国产亚洲| 国产精品爽黄69天堂a| 国产精品夜间视频香蕉| 欧美视频专区一二在线观看| 国内精品久久久久久久久| 国产精品久久久久久久app| 热99精品里视频精品| 亚洲欧美变态国产另类| 亚洲欧美成人一区二区在线电影| 在线观看日韩www视频免费| 欧美精品久久久久| 国产精品视频网站| 欧美日韩黄色大片| 色综合男人天堂| 午夜欧美不卡精品aaaaa| 亚洲色图激情小说| 亚洲丝袜av一区| 亚洲一区二区福利| 亚洲高清免费观看高清完整版| 国产精品日日摸夜夜添夜夜av| 国语自产在线不卡| 亚洲国产欧美一区二区三区久久| 日韩欧美一区视频| 91在线免费网站| 欧美性生交xxxxx久久久| 亚洲另类激情图| 一本色道久久综合亚洲精品小说| 热久久视久久精品18亚洲精品| 91高潮精品免费porn| 久久久久久一区二区三区| 精品久久久久久久久久久久| 在线观看国产精品日韩av| 欧美激情国内偷拍| 久久99精品久久久久久青青91| 亚洲一区二区三| 中文字幕精品视频| 亚洲精品国产精品国产自| 国产丝袜一区二区三区免费视频| 国产精品中文字幕在线观看| 91在线免费看网站| 久久精品人人做人人爽| 日韩激情av在线免费观看| 亚洲第一天堂无码专区| 91精品国产高清久久久久久久久| 日韩精品在线视频观看| 欧美在线欧美在线| 亚洲精品免费在线视频| 亚洲欧美日韩国产中文| 91久久久久久国产精品| 琪琪第一精品导航| 亚洲欧美日韩国产中文专区| 庆余年2免费日韩剧观看大牛| 国产激情视频一区| 国产亚洲人成网站在线观看| 亚洲综合最新在线| 日韩精品久久久久| 亚洲香蕉在线观看| 亚洲已满18点击进入在线看片| 久久视频精品在线| 久久精品国产亚洲7777| 欧美激情第1页| 亚洲精品福利视频| 亚洲免费av电影| 97视频com| 国产精品香蕉av| 国产欧美日韩免费| 国产精品国产三级国产专播精品人| 91综合免费在线| 久久久久久亚洲精品不卡| 欧美激情视频网站| 97精品久久久中文字幕免费| 亚洲最大成人在线| 性夜试看影院91社区|