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