批处理中直接执行vbs的方法

示例批处理:test.bat

Code:

复制代码 代码如下:

:On Error Resume Next

Sub bat

echo off & cls

echo Batching_codez_here_following_vbs_rules & pause

start wscript -e:vbs "%~f0"

Exit Sub

End Sub

MsgBox "This is vbs"

上面的代码巧妙利用 bat 和 vbs 的语法特征,让同一个文件,被 cmd.exe 识别成批处理,让 wscrpt.exe 识别成 vbs,并且同时符合两者的语法,并且保证都没有错误,保证两者的高度兼容。就叫它 bat/vbs 复合编程吧 (Hybrid Programming)

粗略解释下代码

引用:

:On Error Resume Next

cmd.exe 识别成一段注释

wscript.exe 这样识别, : 在vbs语法里代表分行,然后 On Error Resume Next,也就是让WSH忽略一些错误

引用:

start wscript -e:vbs "%~f0"

cmd.exe 识别成:启动 wscript.exe ,其参数是:

① -e:vbs 设定以vbs解析文件自身

② "%~f0" 指这个批处理本身。

wscript.exe 把这句识别成:调用一个叫 start 的函数,函数参数是 wscript 这个变量,然后用这个函数的结果来 减去 e。接下来是又是一个 : ,分行,然后又是调用一个名叫 vbs 的函数,参数是字符: "%~f0"

这句是最为精巧的,因为它成功的让 vbs 引擎解释了一段批处理,而且没有错误!当然这些 start()、vbs()函数是不存在的,但是会被 cmd.exe 当成命令执行。为什么不用 wscript //e:vbs "%~f0" 来执行呢?vbs解析会出错的,呵呵

这段代码的核心思想已经介绍完毕了。下面,为了让 批处理 以vbs调用其自身后,马上退出,我们需要 exit 或者 goto :eof,但是 goto call exit 在vbs又是一个关键词,所以我们只能用符合 vbs 语法的 exit sub,所以我们在第二句加一个

sub bat,其实 cmd.exe 寻找了一个叫 sub.exe 的命令,但是这个命令是不存在的,cmd.exe 跳过。然后在 6、7 句加一个 exit sub 以及 end sub,让 批处理结束,同时又符合 vbs 的语法

那个 echo off & cls ,批处理的意思就是相当于 @echo off ,但是 vbs 不认 @ 符号,所以改成 echo off & cls , vbs 可以解析为,调用一个叫 echo() 的函数,参数为 off & cls ,也就是两个字符串 off 和 cls 相加

Well,接下来,你可以运行vbs脚本了,效率和真正的vbs一样高!

这段代码的好处是:不用生成临时文件。其实用 echo 或者 more 或者 find 来生成临时vbs很浪费系统资源的,用我写的这段代码,就完全免去了这些麻烦。直接混合编程,以 start wscript -e:vbs "%~f0" 为界限,上面写 批处理,下面写 vbs,并行不悖!

详细出处参考:http://www.jb51.net/article/25962.htm

详细出处参考:http://www.jb51.net/article/25962.htm

详细出处参考:http://www.jb51.net/article/25962.htm

示例批处理:test.bat

Code:

复制代码 代码如下:

:On Error Resume Next

Sub bat

echo off & cls

echo Batching_codez_here_following_vbs_rules & pause

start wscript -e:vbs "%~f0"

Exit Sub

End Sub

MsgBox "This is vbs"

上面的代码巧妙利用 bat 和 vbs 的语法特征,让同一个文件,被 cmd.exe 识别成批处理,让 wscrpt.exe 识别成 vbs,并且同时符合两者的语法,并且保证都没有错误,保证两者的高度兼容。就叫它 bat/vbs 复合编程吧 (Hybrid Programming)

粗略解释下代码

引用:

:On Error Resume Next

cmd.exe 识别成一段注释

wscript.exe 这样识别, : 在vbs语法里代表分行,然后 On Error Resume Next,也就是让WSH忽略一些错误

引用:

start wscript -e:vbs "%~f0"

cmd.exe 识别成:启动 wscript.exe ,其参数是:

① -e:vbs 设定以vbs解析文件自身

② "%~f0" 指这个批处理本身。

wscript.exe 把这句识别成:调用一个叫 start 的函数,函数参数是 wscript 这个变量,然后用这个函数的结果来 减去 e。接下来是又是一个 : ,分行,然后又是调用一个名叫 vbs 的函数,参数是字符: "%~f0"

这句是最为精巧的,因为它成功的让 vbs 引擎解释了一段批处理,而且没有错误!当然这些 start()、vbs()函数是不存在的,但是会被 cmd.exe 当成命令执行。为什么不用 wscript //e:vbs "%~f0" 来执行呢?vbs解析会出错的,呵呵

这段代码的核心思想已经介绍完毕了。下面,为了让 批处理 以vbs调用其自身后,马上退出,我们需要 exit 或者 goto :eof,但是 goto call exit 在vbs又是一个关键词,所以我们只能用符合 vbs 语法的 exit sub,所以我们在第二句加一个

sub bat,其实 cmd.exe 寻找了一个叫 sub.exe 的命令,但是这个命令是不存在的,cmd.exe 跳过。然后在 6、7 句加一个 exit sub 以及 end sub,让 批处理结束,同时又符合 vbs 的语法

那个 echo off & cls ,批处理的意思就是相当于 @echo off ,但是 vbs 不认 @ 符号,所以改成 echo off & cls , vbs 可以解析为,调用一个叫 echo() 的函数,参数为 off & cls ,也就是两个字符串 off 和 cls 相加

Well,接下来,你可以运行vbs脚本了,效率和真正的vbs一样高!

这段代码的好处是:不用生成临时文件。其实用 echo 或者 more 或者 find 来生成临时vbs很浪费系统资源的,用我写的这段代码,就完全免去了这些麻烦。直接混合编程,以 start wscript -e:vbs "%~f0" 为界限,上面写 批处理,下面写 vbs,并行不悖!

详细出处参考:http://www.jb51.net/article/25962.htm

详细出处参考:http://www.jb51.net/article/25962.htm

详细出处参考:http://www.jb51.net/article/25962.htm


相关文章

  • 如何防范vbs脚本病毒
  • 1.如何从样本中提取(加密)脚本病毒 对于没有加密的脚本病毒,我们可以直接从病毒样本中找出来,现在介绍一下如何从病毒样本中提取加密VBS脚本病毒,这里我们以新欢乐时光为例.用JediEdit打开folder.htt.我们发现这个文件总共才9 ...查看


  • 教你在局域网同步本机电脑时间
  • 教你在局域网同步本机时间 很多时候公司内部有多台电脑,由于各种问题,系统时间总是不准确,有的快,也有的慢,下面这方法主要是针对在局域网内的电脑使用,在局域网同步本机时间,XP下测试通过. 使用到工具 记事本,时间准确的电脑,最好是服务器 下 ...查看


  • 金蝶K3常见问题
  • 金蝶K3常见问题(二) 问题描述 在存货核算系统,期初成本调整后,是需要相应的做成本调整的凭证的,这个凭证一般是做生产成本的调整.那么对于前面调整的没有本期领料的物料,在成本管理系统,是不参与计算的,那么这部分的成本转移在成本管理系统本期没 ...查看


  • 修改网站上传文件大小的方法
  • Request 对象 错误 'ASP 0104 : 80004005' 不允许操作 /include/upload_config.asp,行 16 系统限制了上传大小,操作不允许. 原因: 在使用Windows2003作为web服务器的时候 ...查看


  • 电脑中病毒,文件夹全部变成了快捷方式 - botu的日志 - 网易博客
  • 电脑中病毒,文件夹全部变成了快捷方式 设计感悟 2009-09-19 14:04:56 阅读9483 评论6 字号:大中小 前几天,我的电脑感染病毒了,所有盘里面的所有文件夹都被隐藏掉,出现一个同名的1K大小的快捷方式,好郁闷.从网上搜索& ...查看


  • 计算机病毒发展简史
  • 计算机病毒发展简史 [提要]普通病毒 网络蠕虫病毒 变形病毒 [内容]计算机病毒的发展过程可分为三个阶段:普通计算机病毒.网络蠕虫病毒.和变形病毒. 普通计算机病毒 20世纪60年代初,美国贝尔实验室里,三个年轻的程序员编写了一个名为&qu ...查看


  • 电脑病毒的命名规则大全与防毒策略
  • [摘要]: 电脑病毒层出不穷,本来电脑病毒就够复杂的,更不用说还有变种,就显得更说不清了.其实只要我们掌握一些病毒的命名规则,我们就能通过杀毒软件的报告中出现的病毒名来判断该病毒的一些共有的特性了:一 电脑病毒层出不穷,本来电脑病毒就够复杂 ...查看


  • 企业网络的结构
  • 公司大致网络结构: 以防火墙为中心,不安全区接路由器,连到外网,安全区通过路由器或者交换机接内网,DMZ区接服务器对外提供服务. 光纤-防火墙-服务器-交换机-PC 随着数字技术及Internet技术的日益发展,病毒技术也在不断发展提高.它 ...查看


  • 双击盘符无法打开移动硬盘如何解决
  • 问:在"我的电脑"中双击盘符无法打开移动硬盘,并出现"找不到autorun.vbs"的提示?只能通过右键的"打开",或"自动播放"后弹出的对话框打开.该如何解决 ...查看


热门内容