• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >DOS/BAT > bat、vbs、js 原生混编(一个bat可以执行vbs,js代码)

bat、vbs、js 原生混编(一个bat可以执行vbs,js代码)

作者:mdxy-dxy 字体:[增加 减小] 来源:互联网

mdxy-dxy 通过本文主要向大家介绍了vbs调用bat,bat转vbs,vbs和bat,vbs运行bat,vbs隐藏运行bat等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

基本框架:

<!-- : bathome
@echo off
echo I'm Batch!
mshta "file://%~f0"
pause&exit
使用注释标签囊括批处理部分,条件是批处理部分不能出现注释标签的结束符
-->
<script language=vbs>
Msgbox "I'm VBScript!"
</script>
<script>
alert("I'm JavaScript!")
</script>
<script>close()</script>
</div>

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

@echo off
echo I'm Batch!
mshta "%~f0" <nul
pause&exit
批处理部分之后要加上一串 >,数量要比前文出现的 < 更多,mshta 才能区分哪些是标签
而且前文出现从文件获取重定向输入的时候,建议加上双引号,例如 <"script"
>>>>>>>>>>>>>>
<script language=vbs>
Msgbox "I'm VBScript!"
</script>
<script>
alert("I'm JavaScript!")
</script>
<script>close()</script>
</div>

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

@goto :bat
<script language=vbs>
Msgbox "I'm VBScript!"
</script>
<script>
alert("I'm JavaScript!")
</script>
<script>close()</script>
:bat
@echo off
echo I'm Batch!
mshta "%~f0" <nul
pause&exit
</div>

要注意的是,这里的宿主是 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,回头上镜像站搜下,看看有没有进一步的发展

:<!--
::::::::::::::::::::::::::::::::BAT::::::::::::::::::::::::::::::::

::::::::1.执行HTML代码之前的BAT代码::::::::
@echo off
call :e Starting mshta...
pause
::::::::1.执行HTML代码之前的BAT代码::::::::

::执行HTML代码:
start mshta %0

::::::::2.执行HTML代码之后的BAT代码::::::::
call :e Mshta is executing HTML codes...
pause
::::::::2.执行HTML代码之后的BAT代码::::::::

::退出BAT:
exit/b

:::::::BAT函数定义部分:::::::
:e
echo %*
goto :eof
:::::::BAT函数定义部分:::::::

::::::::::::::::::::::::::::::::BAT::::::::::::::::::::::::::::::::
-->

<!--此句用来清除第一行的:-->
<script>document.body.innerText=""</script>

<!--------------------------HTML-------------------------->
<body onkeypress=window.close()>
<hr color=red>
<marquee><font color=green>HTML Codes</font></marquee>
<hr color=red>
<!--------------------------HTML-------------------------->

<!-- BAT & HTML {s11ss@www.cn-dos.net/forum 2008-4-22}
思路:当此文件被当作BAT文件执行时,未执行到HTML代码部分时就已退出;
当此文件被当作HTML文件执行时,BAT代码部分被注释,不会被执行。
-->
</div>

</div>

您可能想查找下面的文章:

  • bat、vbs、js 原生混编(一个bat可以执行vbs,js代码)
  • vbs与bat混编修改虚拟盘符的卷标
  • bat生成vbs通过注册表禁用或启用USB端口的代码
  • VBS和bat批处理逐行读取文件实例

相关文章

  • 备份硬盘引导记录的方法
  • 批处理bat下载FTP服务器上指定天数之前的文件
  • 批处理中如何判断参数中含有某些字符串?
  • 巧用批处理解决IE不支持JavaScript等问题
  • Ver、Vol、Ctty命令的使用教程
  • CMD命令详解 目录类命令(md、cd、rd、dir、path、tree、deltree)
  • 批处理实现屏幕炸弹
  • 批处理去除指定字符前所有的0的代码
  • 把首行和尾行互换的批处理
  • MaxDOS V6 系统备份查看器 批处理代码

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 执行批处理bat程序中的条件处理
    • 用批处理实现的删除特定时间以前的文件
    • 批处理制作照片整理器第1/2页
    • 网管常用的网络命令集合
    • 百度关键字搜索(批处理打开网页)
    • Windows下通过bat获取网络连线实际名称,加强IP类设置脚本的兼容性
    • bat与注册表操作的方法分析 原创
    • 批处理程序删除自身 bat批处理
    • 自动生成批量执行SQL脚本的批处理实例演示
    • 批处理bat计算两个时间差

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有