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

首頁 > 編程 > VBScript > 正文

VBS中Run和Exec的區別

2020-07-26 11:45:21
字體:
來源:轉載
供稿:網友
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.ProcessIdoExec.TerminateWScript.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.QuitEnd IfSet 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 按最近的窗口大小和位置顯示窗口。活動窗口保持活動狀態。
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 oShellSet 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",,Truews.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.ProcessIde.TerminateWSH.Sleep 1000MsgBox 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
中文欧美日本在线资源| 人妖精品videosex性欧美| 精品国产乱码久久久久久虫虫漫画| 日韩精品在线看| 亚洲毛片在线观看| 久久天天躁狠狠躁夜夜av| 久久久久国产精品免费网站| 日韩中文字幕av| 欧美国产在线视频| 国产午夜精品一区二区三区| 色综久久综合桃花网| 丝袜美腿亚洲一区二区| 91香蕉嫩草影院入口| 久久久久北条麻妃免费看| 成人久久一区二区| 亚洲成人av片在线观看| 国产日韩欧美中文| 一区二区三区视频免费在线观看| 国产精品视频久久久久| 欧美有码在线观看视频| 欧美在线视频a| 97成人精品区在线播放| 少妇高潮 亚洲精品| 92国产精品久久久久首页| 欧美另类精品xxxx孕妇| 一区二区三区 在线观看视| 91国产视频在线| 亚洲护士老师的毛茸茸最新章节| 久久精品91久久香蕉加勒比| 国产精品视频26uuu| 久久人人看视频| 日韩在线视频观看正片免费网站| 久热国产精品视频| 91黄色8090| 欧美激情性做爰免费视频| 亚洲综合中文字幕在线| 最近2019中文字幕第三页视频| 精品国内亚洲在观看18黄| 亚洲综合视频1区| 日韩欧美中文字幕在线播放| 91在线观看免费高清完整版在线观看| 97超级碰碰人国产在线观看| 成人免费午夜电影| 欧美激情va永久在线播放| 一区二区三区亚洲| 亚洲色图校园春色| 亚洲午夜精品久久久久久久久久久久| 中文字幕日韩av| 97香蕉久久夜色精品国产| 国产拍精品一二三| 欧美激情欧美激情| 成人网中文字幕| 97高清免费视频| 国产美女主播一区| 国模视频一区二区三区| y97精品国产97久久久久久| 亚洲免费视频在线观看| 91精品国产综合久久香蕉最新版| 亚洲欧美www| 久久久久久这里只有精品| 久久久av亚洲男天堂| 热久久美女精品天天吊色| 性色av一区二区三区在线观看| 伦理中文字幕亚洲| 亚洲自拍欧美另类| 一区二区在线视频播放| 91亚洲精品久久久| 日韩在线中文视频| 欧美久久精品午夜青青大伊人| 欧美专区国产专区| 成人福利网站在线观看| 亚洲性夜色噜噜噜7777| 欧美极品少妇xxxxx| 亚洲成在人线av| 久久的精品视频| 国产区精品在线观看| 日韩av网址在线观看| 另类色图亚洲色图| 成人精品在线观看| 91精品国产综合久久香蕉| 国产日韩精品入口| 岛国av在线不卡| 亚洲欧美国产日韩天堂区| 68精品久久久久久欧美| 久久这里有精品视频| 欧美裸体xxxxx| 欧美肥老太性生活视频| 亚洲精品久久久久久久久久久| 不卡av电影院| 国产午夜精品久久久| 国产精品jizz在线观看麻豆| 一区二区三区高清国产| 亚洲精品美女在线观看| 久久精品一偷一偷国产| 亚洲成人激情在线观看| 欧美大片在线看免费观看| 日本久久久a级免费| 色偷偷88888欧美精品久久久| 日韩中文综合网| 久久精品国产久精国产一老狼| 久久中文精品视频| 欧美国产极速在线| 欧美自拍大量在线观看| 国产成人福利夜色影视| 在线精品播放av| 亚洲精品日韩激情在线电影| 中文字幕日韩av| 另类专区欧美制服同性| 欧美精品www| 国产精品久久久久久久久久免费| 日韩欧美精品在线观看| 欧美高跟鞋交xxxxhd| 亚洲肉体裸体xxxx137| 亚洲一区二区三区成人在线视频精品| 国产精品久久久久久亚洲调教| 国产91色在线|| 国产美女被下药99| 国产精品嫩草视频| 亚洲欧美自拍一区| 亚洲欧美一区二区三区久久| 国产精品久久不能| 欧美亚洲一级片| 亚洲伊人久久大香线蕉av| 国产丝袜精品第一页| 欧美精品xxx| xx视频.9999.com| 亚洲精品欧美一区二区三区| 精品少妇v888av| 日韩免费在线播放| 成人疯狂猛交xxx| 欧美中文在线视频| 亚洲一区二区三区四区视频| 亚洲bt欧美bt日本bt| 美女国内精品自产拍在线播放| 成人免费看黄网站| 中文字幕亚洲精品| 久久久精品一区二区| 久久免费少妇高潮久久精品99| 欧美孕妇毛茸茸xxxx| 亚洲老头老太hd| 中文字幕欧美专区| 中文字幕免费国产精品| 黑人与娇小精品av专区| 精品人伦一区二区三区蜜桃免费| 成人免费观看49www在线观看| 成人黄色免费看| 日韩在线激情视频| 亚洲欧洲视频在线| 免费97视频在线精品国自产拍| 欧美在线一区二区视频| 亚洲黄色av女优在线观看| 欧美性猛交99久久久久99按摩| 日韩精品日韩在线观看| 福利微拍一区二区| www.亚洲男人天堂| 国产精品影院在线观看| 国产区精品在线观看| xxx欧美精品| 亚洲欧美综合区自拍另类| 亚洲一二在线观看| 亚洲高清福利视频| 日本一区二三区好的精华液| 88国产精品欧美一区二区三区| 国产精品福利在线|