html页面 js调用bat,bat、vbs、js 原生混编(一个bat可以执行vbs,js代码)

发现 mshta 会把 file:// 协议指向的文件当作 html 来解析(注:IUnknown 与 happyxxdhaha 提醒此处必需使用绝对路径,否则不会执行),心里顿时有一万只草泥马奔过,原来如此简单的答案就在身边,却错过了四年

基本框架:

复制代码 代码如下:

Msgbox "I'm VBScript!"

alert("I'm JavaScript!")

事实上,file:// 协议名可以省略,而且如果不需要理会界面的话,完全可以不用注释标签:

复制代码 代码如下:

@echo off

echo I'm Batch!

mshta "%~f0"

pause&exit

批处理部分之后要加上一串 >,数量要比前文出现的 < 更多,mshta 才能区分哪些是标签

而且前文出现从文件获取重定向输入的时候,建议加上双引号,例如

>>>>>>>>>>>>>>

Msgbox "I'm VBScript!"

alert("I'm JavaScript!")

另一用 goto 的种写法可能更直观一点:

复制代码 代码如下:

@goto :bat

Msgbox "I'm VBScript!"

alert("I'm JavaScript!")

:bat

@echo off

echo I'm Batch!

mshta "%~f0"

pause&exit

要注意的是,这里的宿主是 mshta,所以不支持 WSH 宿主的方法和属性(部分属性或方法的替代方案详见后文)

但是!mshta 有嘛不好!

原生支持 setTimeout

原生支持 iframe

原生支持 dom

原生支持 javascript、vbscript 无障碍交互

原生支持 Ajax

原生支持加载外部脚本

原生支持在窗口中选择文件

原生支持复杂的页面交互

...

有这么多便利,那还计较什么呢?

首发于批处理之家

------------------------------------------------------------------------------------------------------------

关于 mshta 宿主的一些知识,参考: https://msdn.microsoft.com/en-us/library/ms536495(VS.85).aspx

感谢 xiaopo 扫盲,才知道联盟早已出现过 mshta 方案的雏形:http://cndos.fam.cx/forum/viewthread.php?tid=39655,回头上镜像站搜下,看看有没有进一步的发展

复制代码 代码如下:

:


HTML Codes


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值