返回列表 发帖

vbs脚本文件执行

昨天下载并且安装了Updater Application Block后,需要执行一个Deploy.vbs的文件,鄙人才疏学浅,这个小问题竟然也花费了我不少心机。
! R, h& D/ b( Q$ ~- L2 ~5 m, t现在把结论共享一下。
3 j! C) ^8 t9 h0 h; F: ]: Q
# W- F; K: V* f7 l) B' |* S首先,我的vbs文件关联已经被“豪杰”夺取了。我双击Deploy.vbs就会打开豪杰,比较郁闷。但是我用了打开方式,试了浏览器、cmd,都无济于事。
' ]3 [0 {$ u7 H4 f7 ?: L. Y5 F+ B: J3 v3 {
今天,我想到这个问题后,就有想法去Microsoft的News Group上去问一问。然后又去了CSDN的全文检索。果然很争气,我的关键字只是vbs,执行,就找到了一大堆我想要的东东。了解到用wscript.exe来执行这个文件。
( y5 J/ ?* @6 A, o# k% J! y& b( v- A1 h0 r: p
在cmd里敲了wscript.exe Deploy.vbs,但是返回错误是  There is no script engine for fileextension '.vbs'。这个时候我想到了google。果然搜到了不少有用的信息,其中第一条里我就找到了解决办法。原因是我的vbs关联已经丢失了,必须显示指定。
  ?) R3 h$ F% n; ]! R5 S; L7 p9 s( o) }2 w) A# r9 a
cmd中敲入 wscript.exe  //e:vbscript  Deploy.vbs。果然成功!!!# N) I9 H# {9 }
  i; h0 G/ e7 c

4 P( _3 b/ @. i5 U( ]3 g
$ e0 e3 c% X0 p8 O- d总结:用wscript.exe 执行类似vbs这类的脚本文件。如果文件关联丢失。可以用//e:vbscript.4 U' Q) ]7 X" J& `
/ p: c% |2 j) g% {% @" [* A

" N8 `2 N5 |! i* L! j* X. x- R- q
7 z4 x6 m9 T& \; V; ]+ o$ S$ k4 y' J附上我找到的很有帮助的文章。& z7 p8 S9 {, e7 q( A2 U

- G) o6 G  s" O$ z& p% i! R0 k2 [. U
) N+ `# S8 X( x" U. k6 J  U# \
5 R1 f! i3 P: i% q9 y4 X$ U+ Q# u一、什么是WSH? 4 z. k* g5 d, ?3 R  v( W" y/ Y
' ]0 x: i* G, O8 R& ]  [* Q- ?2 O5 m3 S
  WSH是Windows Scripting Host(Windows脚本主机)的缩略形式。WSH这个概念最早出现于Windows98操作系统,是一个基于32 位  Windows 平台、并独立于语言的脚本运行环境。比如:你自己编写了一个脚本文件,如后缀为 .vbs 或.js 的文件,然后在 Windows 下双击 并执行它,这时,系统就会自动调用一个适当的程序来对它进行解释并执行,而这个程序,就是Windows Scripting Host,程序执行文件名为  Wscript.exe (若是在DOS命令提示符下,则为Cscript.exe)。
& t; L# ^! o# \8 s( {8 @" A. \3 g0 u$ B6 {" |/ E
  
! N# f# y/ x8 X% z/ @* i. ?: C; j7 A/ g8 O/ a/ i+ t, n7 i
  想知道自己的机器上有没有WSH吗?查看一下你的机器里有没有“Wscipt.exe”或者“Cscript.exe”这两个文件就可以了。如果找到,恭 喜你!你已经安装了WSH。否则,自己手动安装吧:
, ?9 ^, P1 H/ r0 r: X
6 Y3 J5 o- A. U' |, t  在Windows98环境下,WSH是作为操作系统的一个组件自动安装的,如果不慎丢失了这个组件,可以从依次打开“控制面板-->添加/删除程序--〉Windows安装程序--〉附件”,然后将“Windows ScriptingHost”前的划上“√”,再确定即可完成WSH组件的安装。 1 j, Q5 @8 x- _1 {! o9 f

2 T! I( z; }6 w$ T) m  
, B( \& D0 d$ j, W( T) M: u; X$ _% j1 ?' ~: T+ n. C
  二、脚本语言与WSH的关系 : K1 E9 F! u% p; p

8 L% x7 {4 n& k+ C1 H  大家知道,脚本语言(包括javascript和VBscript语言等)经常会被植入网页之中(其中包括 HTML 页面客户机端和 ASP页面服务器端) 。对于植入 HTML 页面的脚本,其所需的解析引擎会由 IE 这样的网页浏览器载入;对于植入 ASP页面的脚本,其所需的解析引擎会由 IIS( Internet Information Services)提供。而对于出现在 HTML 和ASP 页面之外的脚本(它们常以独立的文件形式存在),就需要经由 WSH 来 处理了。需要说明的是:WSH 要想正常工作,还要安装IE 3.0或更高版本的 IE,因为 WSH 在工作时会调用 IE 中的 VBScript 和  javascript 解析引擎。[未结束][iduba_page]在这些被植于网页的脚本语言中,绝大多数是与网络安全无关的。但也有少数别有用心的好事者,把一些严重危及网络安全的代码(我们常常称之为“恶意代码”,他们通常都要通过修改注册表达到“恶意”的目的!),混放在正常的脚本之中,常常让我们防不胜防。但是,如果我们了解一点关于脚本语言的知识,这些“伎俩”都是非常容易识破的。还是让我们从几个简单 的实例开始吧……/ T' `3 Q, J+ n& m

0 i/ B/ e7 m2 C7 ]0 A  
; Z! [* z) P( c/ E! n4 i: V" N5 K" |  T/ h6 U" k+ E9 [
  三、WSH应用举例
1 }" Y; w* i- m  ~" Q: J! z) e2 _( V5 M# y6 z  U1 t
  WSH可以处理脚本程序,怎样阅读和编写WSH的脚本源文件呢?只要你有一点Basic(会VB的编程更好,呵呵)语言的基础,学会看懂WSH脚本语言的程序并不是一件难事。去C:WINDOWSSAMPLESWSH目录以下将看看吧!里面提供了几类经典的脚本例子,而且分别提供了VBScript和 javascript两个版本,我们只要用记事本打开它们并仔细研究就不难学到一些基本的WSH应用。 ; |3 e4 ]' ?4 @/ D0 m

6 L( F2 e8 J5 I) C3 u1 ^  R& _   * `: M! ~- {3 B' K1 l

4 I2 l3 s- T5 I7 I0 {  你只需在记事本中依次输入以下每个实例中的代码,并保存为相应的“*.vbs”文件,双击这个文件,你就可以看到相应的效果了。
1 ~7 v& U/ F& G+ h# _
6 l% R; e! Z% X% O, `0 }! _* Z 7 c5 Z/ O, W  v' ?+ k' [
3 A; W& n" W5 z  z1 K
# d4 x$ ^0 m* C# N1 r2 M, a

" t3 y9 c5 ]' ~2 c# o% ~. y% e0 ^
& L0 V( |. J5 Z6 Z9 R4 T) j
. y$ [9 I- Z+ ]1 z8 g6 ~3 zQ: How do I open script files? Trying the above solution makes Windows XP throw an error?" C  C; v: G7 _7 @3 q

) G# R0 A4 Y+ l1 N' I8 f/ ZA:This is similar to the *.js association problem. Some machines seem to,for some reason, lose their *.vbs association. It's not that the filesopen with dreamweaver or whatever -- it's that the machine just doesn'tknow how to run them. If you have a scheduled task, "Could not run"will appear in the status column.
. E5 i. M  l% [* K# ?3 |( I0 A
3 M8 I, h3 M+ z% K3 P7 hSo, you're a smart person andread through the FAQ. You find the *.js extension problem, and you trythat fix: you run it as "wscript c:\path\to cript.vbs". But that, inturn, produces a pop-up error, this time a "Windows Scripting Host"error: "There is no script engine for file extension '.vbs'." So, forsome reason, wscript doesn't even know what to do with *.vbs files.
: Z; S9 I3 x  d$ |2 K# s5 H  A0 v7 P5 h- S8 k; f7 q
The solution to this problem is to run the script as:
' t7 K( b$ _# r* {( x+ n
8 w! |: w: J0 t1 F* M) Gwscript //e:vbscript c:\path\to cript.vbs  ^# W) w8 b& ]' f! ?* J8 S

& M- y0 w. M$ X5 D7 [, tThe "//e:vbscript" tells wscript to use the vbscript engine to parse the script. It will then run correctly.
( o* N8 ~3 K' K7 B1 ^) m1 r# |& S, ^6 E
A few alternative solutions, perhaps easier are:2 d! ^) w, x# @5 x* H0 n# {1 |- o5 C
Renameit .vbe (VBScript Encoded Script File). Not sure if this is a bad idea,but it seemed to work for some scripts. Make a new association for VBS.Open up my computer, select Tools menu-> Folder Options, and go tothe File Types tab. There probably isn't a VBS association listed ifyou have this problem. Select New, type in VBS, and hitAdvanced>>. Then, from the pull-down menu, select "VBScriptScript File". Making this selection automatically takes care of theassociation, along with the //e:vbscript problem. This is probably the"correct" solution... " g6 r7 ~: K7 r7 g  X
This problems usually occurs only on WindowsXP machines, but the cause is not known. A Microsoft KB article on thisissue can be found here. Thanks goes to Bob_2k for writing this FAQentry.

返回列表
【捌玖网络】已经运行: