批处理中直接执⾏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 的语法特征,让同⼀个⽂件,被 识别成批处理,让 识别成 vbs,并且同时符合两者的语法,并且保证都没有错误,保证两者的⾼度兼容。就叫它 bat/vbs 复合编程吧 (Hybrid Programming)
粗略解释下代码
引⽤:
:On Error Resume Next
< 识别成⼀段注释
< 这样识别, : 在vbs语法⾥代表分⾏,然后 On Error Resume Next,也就是让WSH忽略⼀些错误
引⽤:
start wscript -e:vbs "%~f0"
< 识别成:启动 ,其参数是:
① -e:vbs 设定以vbs解析⽂件⾃⾝
批处理文件注释② "%~f0" 指这个批处理本⾝。
< 把这句识别成:调⽤⼀个叫 start 的函数,函数参数是 wscript 这个变量,然后⽤这个函数的结果来减去 e。接下来是⼜是⼀个 : ,分⾏,然后⼜是调⽤⼀个名叫 vbs 的函数,参数是字符: "%~f0"
这句是最为精巧的,因为它成功的让 vbs 引擎解释了⼀段批处理,⽽且没有错误!当然这些 start()、vbs()函数是不存在的,但是会被 当成命令执⾏。为什么不⽤ wscript //e:vbs "%~f0" 来执⾏呢?vbs解析会出错的,呵呵
这段代码的核⼼思想已经介绍完毕了。下⾯,为了让批处理以vbs调⽤其⾃⾝后,马上退出,我们需要 exit 或者 goto :eof,但是 goto call exit 在vbs⼜是⼀个关键词,所以我们只能⽤符合 vbs 语法的 exit sub,所以我们在第⼆句加⼀个
sub bat,其实 寻了⼀个叫 的命令,但是这个命令是不存在的, 跳过。然后在 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,并⾏不悖!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论