dos批处理文件中使用vbs

mshta命令用法示例_DOS/BAT_脚本之家
http://www.jb51.net/article/50370.htm
这篇文章主要介绍了mshta命令用法示例 ,需要的朋友可以参考下
它支持命令行参数,可以接收JS和VBS的方法。看示例(在命令行下测试): 

JS: 

复制代码代码如下:

mshta vbscript:window.execScript("alert('hello world!');","javascript") 


VBS: 

复制代码代码如下:

mshta javascript:window.execScript("msgBox('hello world!'):window.close","vbs") 


调用VBS,分别使用MSGBOX函数和POPUP方法: 

复制代码代码如下:

mshta vbscript:msgbox("该干活了,伙计!",64,"提示")(window.close) 
mshta vbscript:CreateObject("Wscript.Shell").popup("该干活了,伙计!",7,"提示",64)(window.close) 

execute方法 一条语句连续弹二个信息框: 

复制代码代码如下:

mshta vbscript:execute("msgbox ""one BOX"":msgbox ""two BOX"":window.close") 

LZ他们弄的,调用系统的英文阅读: 

复制代码代码如下:

mshta vbscript:createobject("sapi.spvoice").speak("Good luck")(window.close) 


///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
[分享]mshta的标准用法 - VBS求助&讨论 - 批处理之家 批处理
http://www.bathome.net/thread-11516-1-1.html
把这里的代码直接复制到cmd窗口运行就可以了。
mshta是用来解释hta程序的,或者叫hta程序的宿主。而hta程序其实就是html文件。所以你只要输入html标签就可以了。这是标准用法,其它的用法太乱。在cmd中输入下面的文字:
    
    
    
    
  1. mshta vbscript:"<html style=background:buttonface><title>作者:myzam 2011-3-18</title><body>hello world<br/>hello<hr/>world<script language=vbscript>msgbox (123)</script></body></html>"
复制代码
引号中再来引号怎么办?
如 
mshta vbscript:"msgbox ("hello world")"
这样用会报错。解决的办法是 采用双双引号 。也就是说看实例:
    
    
    
    
  1. mshta vbscript:"<html ><title>test</title><body>hello world <script language='vbscript'>msgbox (""hello world"") </script></html>"
复制代码
注意这两句的细微差别。它们都能成功执行。
    
    
    
    
  1. mshta vbscript:"<html ><title>test</title><body>hello world <script language=""vbscript"">msgbox (""hello world"") </script></html>"
复制代码
如果你不喜欢那个弹出的hta窗口,那就加一句话window.close或self.close
    
    
    
    
  1. mshta vbscript:"<html ><title>myzam</title><body>hello world <script language=""vbscript"">msgbox (""hello world""):windwo.close </script></html>"
复制代码
如果你要注释掉脚本中的语句也好办,看代码:
    
    
    
    
  1. mshta vbscript:"<html ><title>myzam</title><body>hello world <script language=""vbscript"">msgbox (""hello world""):‘windwo.close </script></html>"
复制代码
就这么简单。
如果你怀疑这种标准用法,就在看一个脚本吧
    
    
    
    
  1. mshta vbscript:"<script language=vbs>set myzam=createobject(""sapi.spvoice""):myzam.speak ""hello world 日本地震了啊""</script>"
复制代码
按这种标准写法,你想在cmd中写多长的脚本都可以,但是我想没人喜欢在cmd中写那种长脚本。当然以此为依据可以简化在cmd 中的输入,比如标签<html>可以不写出来等等。
如果要在bat中运行vbs我想这是一种比较自然的方法。下面给出一个bat程序
    
    
    
    
  1. @echo off
  2. cmd /c mshta vbscript:"<script language='vbscript'>msgbox (""hello
  3. world""):self.close</script>"
复制代码
其实,上面的bat根本就不需要cmd /k,直接保存为bat 点击就可以运行。这与其它的
bat有这么一点细微的差别。
    
    
    
    
  1. @echo off
  2. mshta vbscript:"<script language='vbscript'>msgbox (""hello
  3. world""):self.close</script>"
复制代码
最后:1#####hta文件的宿主----mshta
                      html的宿主-----IE
                      VBS的宿主----wscrit
                      asp的宿主----IIS
                      BAT的宿主---cmd
                      vba的宿主是---office
         2#####mshta语法
         vbs脚本时
            mshta vbscript:"html标签"
         js脚本时
            mshta jscript:"html标签"
          说明:第一,不要换行
                   第二,标签属性可以用单引号,也可以不用引号,如果要用双引号,那么  双引号请该为双双引号
                   第三,遇到字符串,请用双双引号。
                   第四,如果要从参数的角度讲的话,mshta后面的都可以叫参数。
                     事实上mshta后面的就是参数。

总之,玩mshta命令就是玩的是html标签。
good luck!


--------------------------------------------------
可接受环境变量
    
    
    
    
  1. @echo off
  2. set t="<script language=vbs>msgbox 123:self.close</script>"
  3. mshta vbscript:%t%
复制代码
到此,在bat中使用vbs得到了完全解决。从此可以在bat和vbs间自由的航行了。

你可能感兴趣的:(dos,脚本,vbs)