发现 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>
事实上,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>
另一用 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
要注意的是,这里的宿主是 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"codetitle">复制代码 代码如下:
:<!--
::::::::::::::::::::::::::::::::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代码部分被注释,不会被执行。
-->
原生混编
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】