批处理之家's Archiver

CrLf 发表于 2015-3-4 22:13

批处理之家 js 在线脚本库

[i=s] 本帖最后由 CrLf 于 2016-1-12 15:47 编辑 [/i]

咱自己的在线脚本库上线啦~
目前的库共有 64 个,涵盖框架、在线获取第三方工具、模拟对象、语法增强、dom 操作、格式转换、文本解析、常用函数、网页特效等范畴
依托于 bathome,因服务器每日维护的原因,大约在凌晨3点~4点之间无法访问

脚本库暂由本人编写收集和维护,json 格式的在线 js 库列表见 [url]http://www.bathome.net/lib/bathomeLib.json[/url],最后更新于 2015-12-24,总数 64 个
第三方工具库则依托 Batch-CN,table 格式的第三方工具列表见 [url]http://batch-cn.qiniudn.com/list/tool.txt[/url],最后更新于 2015-12-30,总数 1200 个
路径区分大小写,bathomeLib.json 和 bathomeLib.JSON 不同
建议通过 Libs.js 的 Libs.get 方法、以及用 Tools.js 的 Tools.get 来调用脚本和下载第三方,可兼容大小写,例如 Libs.get('WSH') 和 Libs.get('wsh') 是等价的


该脚本库主要用于 hta 环境,尤其适合用在[url=http://www.bathome.net/thread-38393-1-1.html]在线 HTA 脚本[/url]中 [url=http://www.bathome.net/viewthread.php?tid=34109]bat+hta 混编[/url]的情况下
这里举几个例子:

[b][size=5]第一个例子,隐藏下载指定的第三方工具[/size][/b]
[quote](由 [url=http://www.bathome.net/viewthread.php?tid=32322]Batch-CN[/url] 提供)
请保存为 .bat 后缀名:[code]<!-- :
@echo off & ( break >"%~f0:Zone.Identifier" ) 2>nul
mshta "%~f0"
printf.exe "你好,我是printf.exe\n"
pause
-->

<script src=http://bbs.bathome.net/lib/diy/hide.js></script>
<script src=http://bbs.bathome.net/lib/diy/Tools.js></script>

<script>
Tools.get('printf')
//调用 Tools 对象的 get 方法在线获取第三方工具 printf
//若已经存在可调用的 printf.exe,则不重复下载
//引用 Batch-CN 的集成资源,感谢 bailong360 提供帮助
</script>[/code]示例脚本:[attach]9129[/attach][/quote]
[b][size=5]第二个例子,解析地址中的变量和命令行参数[/size][/b]
[quote]利用 WSH.js 模拟出 WSH 环境(相似度>90%)
请保存为 .bat 后缀名:[code]@echo off
mshta "%~f0" 【0】开关测试 "【1】嵌套的""测试"   "【2】单个参数测试","【3】其他分隔符测试" | more
pause&exit

>>>>>>>>>>

<script src=http://www.bathome.net/lib/diy/Libs.js></script>
<script>
Libs.get('WSH')
Libs.get('hide')
</script>

<script>
for(var i=0;i<WScript.Arguments.length;i++){
        WSH.Echo(WScript.Arguments(i))
}
</script>[/code]示例脚本:[attach]8297[/attach][/quote]
[b][size=5]第三个例子,在一个标签中使用所有语言[/size][/b]
[quote]使用 code.js 解析 language=code 的 script 节点,并处理为
这里用不到批处理,所以保存为 .hta 就好了:[code]<script src=http://www.bathome.net/lib/diy/hide.js></script>
<script src=http://www.bathome.net/lib/diy/code.js></script>
<script src=http://www.bathome.net/lib/coffeescript.js></script>

<script language=code>
-------VBScript------
MsgBox "我是 VBScript"

-------JavaScript------
alert('我是 JavaScript')

-------CoffeeScript------
alert '我是 CoffeeScript'
</script>[/code]这里 -------JavaScript------ 中的 - 也可以改用连续超过三次的其他部分字符
比如 ###JavaScript###,或 ~~~JavaScript~~~
示例脚本:[attach]8294[/attach][/quote]

[b][color=Blue]友情提示[/color][/b]
如果运行前出现这个提示,请取消“打开此文件前总是”,然后点击运行:
[attach]8466[/attach]
或者在文件属性里点击解除锁定亦可

CrLf 发表于 2015-3-4 22:18

[i=s] 本帖最后由 CrLf 于 2015-11-23 17:51 编辑 [/i]

[b][size=5]19 个自写库[/size][/b]
[table=100%]
[tr][td][b]名称 版本信息[/b][/td][td][b]帮助信息[/b][/td][td][b]bathome 库地址[/b][/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163490&fromuid=30406]callBack[/url]  diy[/td][td]创建各种回调函数,可用于辅助 Array.prototype.each[/td][td]http://www.bathome.net/lib/diy/callBack.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163493&fromuid=30406]ch2num[/url]  diy[/td][td]阿拉伯数字与中文数字互转[/td][td]http://www.bathome.net/lib/diy/ch2num.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163489&fromuid=30406]code[/url]  diy[/td][td]可在一个标签里写入多种语言的脚本[/td][td]http://www.bathome.net/lib/diy/code.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163481&fromuid=30406]console[/url]  diy[/td][td]模拟一个 console 对象,并将其输出显示在当前窗口中。会导致当前窗口其他内容不可见[/td][td]http://www.bathome.net/lib/diy/console.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163490&fromuid=30406]DIYprototype[/url]  diy[/td][td]在 Prototype_MOD.js 的基础上增加了一些继承方法[/td][td]http://www.bathome.net/lib/diy/DIYprototype.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163493&fromuid=30406]Function[/url]  diy[/td][td]各种自定义的常用函数,基于 WSH.js 和 Prototype.js[/td][td]http://www.bathome.net/lib/diy/Function.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163493&fromuid=30406]GetRequest[/url]  diy[/td][td]用于取得URL地址中的变量[/td][td]http://www.bathome.net/lib/diy/GetRequest.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163466&fromuid=30406]hide[/url]  diy[/td][td]隐藏 mshta 窗口,运行后将导致 setTimeout 和 setInterval 失效[/td][td]http://www.bathome.net/lib/diy/hide.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163491&fromuid=30406]iconv[/url]  diy[/td][td]字符编码转换[/td][td]http://www.bathome.net/lib/diy/iconv.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163483&fromuid=30406]Libs[/url]  diy[/td][td]创建一个 Libs 对象,用于管理批处理之家的脚本库[/td][td]http://www.bathome.net/lib/diy/Libs.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163492&fromuid=30406]list[/url]  diy[/td][td]用于罗列各种信息的自定义的函数[/td][td]http://www.bathome.net/lib/diy/list.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163481&fromuid=30406]loadFirebug[/url]  linkto 1.4.0 compressed[/td][td]调用后自动引用官网的 Firebug-lite.js。最强大的网页调试工具之一,按 F12 可呼出控制窗口[/td][td]http://www.bathome.net/lib/diy/loadFirebug.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163480&fromuid=30406]mshta[/url]  diy[/td][td]创建一个 mshta 对象,以获取窗口信息和改变窗口形态[/td][td]http://www.bathome.net/lib/diy/mshta.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163484&fromuid=30406]Tools[/url]  diy[/td][td]创建一个 Tools 对象,用于管理第三方命令行工具[/td][td]http://www.bathome.net/lib/diy/Tools.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163486&fromuid=30406]RunCommand[/url]  diy[/td][td]将接收到的命令行参数当作 js 语句来运行[/td][td]http://www.bathome.net/lib/diy/RunCommand.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163485&fromuid=30406]vbs[/url]  diy[/td][td]在 js 中模拟使用 vbs 代码[/td][td]http://www.bathome.net/lib/diy/vbs.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163485&fromuid=30406]VBScript[/url]  diy[/td][td]在 JScript 中调用 VBScript 函数[/td][td]http://www.bathome.net/lib/diy/VBScript.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163482&fromuid=30406]WSH[/url]  diy[/td][td]模拟一个 WSH/WScript 对象[/td][td]http://www.bathome.net/lib/diy/WSH.js[/td][/tr]
[tr][td][url=http://www.bathome.net/redirect.php?goto=findpost&ptid=34544&pid=163466&fromuid=30406]Zones0[/url]  diy[/td][td]设置 ie 区域设置等级为最低,以免在使用 iframe 访问网页时弹出提示[/td][td]http://www.bathome.net/lib/diy/Zones0.js[/td][/tr]
[/table]
[b][size=5]45 个转载的库[/size][/b]
[table=100%]
[tr][td][b]名称 版本信息[/b][/td][td][b]帮助信息[/b][/td][td][b]bathome 库地址[/b][/td][/tr]
[tr][td][url=http://openexchangerates.github.io/accounting.js/]accounting[/url]  0.4.1 compressed[/td][td]数字格式化通用类[/td][td]http://www.bathome.net/lib/accounting.js[/td][/tr]
[tr][td][url=https://github.com/blueskis382/ActiveXFileWrapper.js/blob/master/ActiveXFileWrapper.js]ActiveXFileWrapper[/url]  N/A mod[/td][td]基于 fso 和 ado 的封装类,可以直观地操作文件,默认编码为 UTF-8[/td][td]http://www.bathome.net/lib/ActiveXFileWrapper.js[/td][/tr]
[tr][td][url=http://jsbeautifier.org/]beautify-css[/url]  1.5.4[/td][td]css 格式化[/td][td]http://www.bathome.net/lib/beautify-css.js[/td][/tr]
[tr][td][url=http://jsbeautifier.org/]beautify-html[/url]  1.5.4[/td][td]html 格式化[/td][td]http://www.bathome.net/lib/beautify-html.js[/td][/tr]
[tr][td][url=http://jsbeautifier.org/]beautify[/url]  1.5.4[/td][td]js 格式化[/td][td]http://www.bathome.net/lib/beautify.js[/td][/tr]
[tr][td][url=https://github.com/MikeMcl/bignumber.js]bignumber[/url]  2.0.0 compressed[/td][td]超大数字运算[/td][td]http://www.bathome.net/lib/bignumber.js[/td][/tr]
[tr][td][url=https://github.com/eligrey/Blob.js]Blob[/url]  N/A[/td][td]模拟 Blob 对象,是一个可以存储二进制文件的容器[/td][td]http://www.bathome.net/lib/Blob.js[/td][/tr]
[tr][td][url=http://coffee-script.org/]CoffeeScript[/url]  1.9.0 compressed[/td][td]CoffeeScript 是 JavaScript 优雅的转义语言,为原生语法添加许多语法糖[/td][td]http://www.bathome.net/lib/coffeescript.js[/td][/tr]
[tr][td][url=https://github.com/ScottHamper/Cookies]cookies[/url]  1.2.0 compressed[/td][td]便捷地读写Cookie[/td][td]http://www.bathome.net/lib/cookies.js[/td][/tr]
[tr][td][url=https://github.com/knrz/CSV.js]csv[/url]  3.6.1 compressed[/td][td]CSV的JavaScript解析库[/td][td]http://www.bathome.net/lib/csv.js[/td][/tr]
[tr][td][url=https://github.com/flitbit/diff]diff[/url]  0.3.0 compressed[/td][td]比较对象之间的差异[/td][td]http://www.bathome.net/lib/diff.js[/td][/tr]
[tr][td][url=https://github.com/cemerick/jsdifflib/blob/master/README.asciidoc#diff-js]difflib[/url]  1.0.0 merge diffview.js[/td][td]比较文本之间的差异,还能展现在网页上[/td][td]http://www.bathome.net/lib/difflib.js[/td][/tr]
[tr][td][url=http://dojotoolkit.org]Dojo[/url]  1.10.4 compressed[/td][td]著名的JS工具包[/td][td]http://www.bathome.net/lib/dojo.js[/td][/tr]
[tr][td][url=http://kiro.me/projects/fuse.html]Fuse[/url]  1.2.2 compressed[/td][td]轻量级模糊查询[/td][td]http://www.bathome.net/lib/fuse.js[/td][/tr]
[tr][td][url=https://github.com/drslump/Ini-js]Ini[/url]  1.0.0[/td][td]INI的JavaScript解析库[/td][td]http://www.bathome.net/lib/ini.js[/td][/tr]
[tr][td][url=http://jquery.com/]jQuery[/url]  1.11.2 compressed[/td][td]继prototype之后又一个优秀的Javascrīpt框架[/td][td]http://www.bathome.net/lib/jquery.js[/td][/tr]
[tr][td][url=http://js2.coffee/]js2coffee[/url]  2.0 compressed[/td][td]可将 JavaScript 翻译为 CoffeeScript.js[/td][td]http://www.bathome.net/lib/js2coffee.js[/td][/tr]
[tr][td][url=http://www.JSON.org/js.html]Json2[/url]  2014-02-04 compressed[/td][td]模拟 JSON 对象[/td][td]http://www.bathome.net/lib/json2.js[/td][/tr]
[tr][td][url=http://stuk.github.io/jszip/]JSZip[/url]  2.4.0 compressed[/td][td]用 javascript 生成 zip 文件[/td][td]http://www.bathome.net/lib/jszip.js[/td][/tr]
[tr][td][url=http://robertwhurst.github.io/KeyboardJS/]KeyboardJS[/url]  0.4.1 compressed[/td][td]支持单一快捷键或者组合键的库[/td][td]http://www.bathome.net/lib/keyboard.js[/td][/tr]
[tr][td][url=http://dmauro.github.io/Keypress/]Keypress[/url]  2.1.0 compressed[/td][td]有着许多特别功能的输入捕捉库[/td][td]http://www.bathome.net/lib/keypress.js[/td][/tr]
[tr][td][url=http://danieltao.com/lazy.js/docs]lazy[/url]  0.4.0 compressed[/td][td]类似 Underscore,但使用懒惰求值的办法大幅提升效率[/td][td]http://www.bathome.net/lib/lazy.js[/td][/tr]
[tr][td][url=https://lodash.com/docs]lodash[/url]  2.4.1 compat[/td][td]完全兼容 Underscore 语法的增强库,增加了许多新的方法[/td][td]http://www.bathome.net/lib/lodash.js[/td][/tr]
[tr][td][url=http://mathjs.org/]Math[/url]  1.3.0 compressed[/td][td]多用途的JavaScript数学库[/td][td]http://www.bathome.net/lib/Math.js[/td][/tr]
[tr][td][url=http://momentjs.cn/docs/]moment[/url]  2.8.4 with-locales compressed[/td][td]为日期计算提供全面的方法[/td][td]http://www.bathome.net/lib/moment.js[/td][/tr]
[tr][td][url=http://mootools.net/]mootools[/url]  1.5.1 compressed[/td][td]一个简洁,模块化,面向对象的开源JavaScript web应用框架[/td][td]http://www.bathome.net/lib/mootools.js[/td][/tr]
[tr][td][url=http://craig.is/killing/mice]mousetrap[/url]  1.4.6 compressed[/td][td]快捷键库,可直观地定义组合键[/td][td]http://www.bathome.net/lib/mousetrap.js[/td][/tr]
[tr][td][url=https://github.com/overset/javascript-natural-sort]naturalSort[/url]  0.7[/td][td]支持对字符串中的小数、ip、文件名、日期等进行自然排序自然排序[/td][td]http://www.bathome.net/lib/naturalSort.js[/td][/tr]
[tr][td][url=http://www.numericjs.com/]numeric[/url]  1.2.6 compressed[/td][td]支持特殊的数学计算,擅长本地执行小型计算[/td][td]http://www.bathome.net/lib/numeric.js[/td][/tr]
[tr][td][url=http://www.numbersjs.info/]numbers[/url]  0.5.0[/td][td]一个可以运算复杂数据运算的js库,名字叫Numbers.js,可以进行三角,矩阵等复杂运算[/td][td]http://www.bathome.net/lib/numbers.js[/td][/tr]
[tr][td][url=http://www.prototypejs.org/]Prototype[/url]  1.7.2 compressed[/td][td]非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax[/td][td]http://www.bathome.net/lib/Prototype.js[/td][/tr]
[tr][td][url=http://requirejs.org/]RequireJS[/url]  2.1.16 mod[/td][td]非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一[/td][td]http://www.bathome.net/lib/require.js[/td][/tr]
[tr][td][url=https://github.com/hakimel/reveal.js/]reveal[/url]  3.1.0[/td][td]基于CSS的幻灯片工具[/td][td]http://www.bathome.net/lib/reveal.js[/td][/tr]
[tr][td][url=http://seajs.org/]sea[/url]  2.2.3 compressed[/td][td]一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制[/td][td]http://www.bathome.net/lib/sea.js[/td][/tr]
[tr][td][url=http://bitwiseshiftleft.github.io/sjcl/doc/]sjcl[/url]  N/A compressed[/td][td]由斯坦福大学计算机安全实验室创立的项目,旨在创建一个安全、快速、短小精悍、易使用、跨浏览器的JavaScript加密库[/td][td]http://www.bathome.net/lib/sjcl.js[/td][/tr]
[tr][td][url=http://www.openjs.com/scripts/events/keyboard_shortcuts/]shortcut[/url]  2.01.B[/td][td]提供更为方便地处理键盘快捷键的函数[/td][td]http://www.bathome.net/lib/shortcut.js[/td][/tr]
[tr][td][url=https://github.com/alexei/sprintf.js]sprintf[/url]  1.0.2 mod[/td][td]模拟 sprintf/vsprintf[/td][td]http://www.bathome.net/lib/sprintf.js[/td][/tr]
[tr][td][url=https://github.com/samsonjs/strftime]strftime[/url]  0.8.2 compressed[/td][td]模拟 strftime[/td][td]http://www.bathome.net/lib/strftime.js[/td][/tr]
[tr][td][url=http://sugarjs.com/api]Sugar[/url]  1.4.1 full compressed[/td][td]为内置对象扩展了一些有用的、直观的方法,会影响 prototype,和 Prototype_MOD.js 有部分重合[/td][td]http://www.bathome.net/lib/Sugar.js[/td][/tr]
[tr][td][url=http://taffydb.com]taffy[/url]  2.7 compressed[/td][td]基于 JSON 管理数据库[/td][td]http://www.bathome.net/lib/taffy.js[/td][/tr]
[tr][td][url=https://github.com/twada/type-name]typeName[/url]  1.0.1[/td][td]比 typeof 得到的结果准确一点,但其实更建议调用 vbs 的 TypeName[/td][td]http://www.bathome.net/lib/typename.js[/td][/tr]
[tr][td][url=http://underscorejs.org]Underscore[/url]  1.7.0 compressed[/td][td]提供了几十种函数式编程的方法,大大方便了Javascript的编程[/td][td]http://www.bathome.net/lib/underscore.js[/td][/tr]
[tr][td][url=http://arshaw.com/xdate/]XDate[/url]  0.8 compressed[/td][td]为日期计算提供全面的方法[/td][td]http://www.bathome.net/lib/xdate.js[/td][/tr]
[tr][td][url=http://xregexp.com/api/]XRegExp[/url]  2.0.0 compressed[/td][td]增加了更多未来浏览器可能包含的功能(ECMAScript 4 - ES4)[/td][td]http://www.bathome.net/lib/xregexp.js[/td][/tr]
[tr][td][url=http://gildas-lormeau.github.io/zip.js/]zip[/url]  N/A[/td][td]用 JavaScript 实现的 zip 压缩和解压缩工具包[/td][td]http://www.bathome.net/lib/zip.js[/td][/tr]
[/table]

顺便附上一些实用的 url,批处理也可用:

[quote][b]查询本机外网 ip [/b]

[url]http://www.bathome.net/s/ip.php[/url]
由批处理之家提供

[url]http://yu2n.sinaapp.com/app/ip/ip.php?act=show_ip_client[/url]
由 yu2n 个人博客提供

[url]http://int.dpool.sina.com.cn/iplookup/iplookup.php[/url]
由新浪提供

[url]http://pv.sohu.com/cityjson?ie=gb2312[/url]
由搜狐提供

[url]http://whois.pconline.com.cn/ip.jsp[/url]
[url]http://whois.pconline.com.cn/ipJson.jsp[/url]
.....
由太平洋电脑网提供,还有其他接口,详见:[url]http://whois.pconline.com.cn/[/url][/quote]


[quote][b]查询指定 ip 归属地[/b]

[url]http://whois.pconline.com.cn/ip.jsp?ip=117.25.131.86[/url]
由太平洋电脑网提供

[url]http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=117.25.131.86[/url]
由新浪提供

[url]http://ip.taobao.com/service/getIpInfo.php?ip=117.25.131.86[/url]
由淘宝提供[/quote]

CrLf 发表于 2015-3-4 22:18

[i=s] 本帖最后由 CrLf 于 2015-8-31 18:10 编辑 [/i]

[b][size=5]自写库之低调运行:[/size][/b]

[quote][b]hide[/b]

隐藏 mshta 窗口,运行后将导致 setTimeout 和 setInterval 失效
[url=http://www.bathome.net/lib/diy/hide.js]http://www.bathome.net/lib/diy/hide.js[/url]

直接运行生效,无接口
会自动用 HTA:APPLICATION 标签创建一个名为 mshta 的对象
运行后将隐藏窗口和任务栏图标,并在页面完全加载完毕后退出窗口(依赖 window.onload)
若要使用 setTimeout 和 setInterval 请保证 window.KEEP_RUNNING 为非 0 数字

例如[code]<script src=http://www.bathome.net/lib/diy/hide.js></script>
<script>
KEEP_RUNNING = 5
setInterval(function(){alert('KEEP_RUNNING =' + --KEEP_RUNNING)},1000)
</script>[/code]示例脚本:[attach]8282[/attach]
[/quote]

[quote][b]Zones0[/b]

设置 ie 区域设置等级为最低,以免在使用 iframe 访问网页时弹出提示
[url=http://www.bathome.net/lib/diy/Zones0.js]http://www.bathome.net/lib/diy/Zones0.js[/url]

直接运行生效,创建 Zones0 对象,有接口
设置 ie 区域设置等级为最低,以免弹出提示,页面加载完毕或窗口正常关闭时会自动恢复原有设置
若未即时还原,将导致使用 ie 内核的浏览器面临风险
也可用 Zone0.recover() 手动还原,之后仍可用 Zone0.disalbe() 手动降低区域为最低,或用 Zone0.modify(n) 手动修改区域设置

例如[code]<script src=http://www.bathome.net/lib/diy/Zones0.js>可以对比一下去掉这行后的效果</script>
<iframe src=http://www.bathome.net></iframe>[/code]示例脚本:[attach]8283[/attach]
[/quote]

CrLf 发表于 2015-3-5 01:21

[i=s] 本帖最后由 CrLf 于 2015-3-9 02:55 编辑 [/i]

[b][size=5]自写库之创建 APPLICATION 对象:[/size][/b]

[quote][b]mshta[/b]

创建一个 mshta 对象,以获取窗口信息和改变窗口形态
[url=http://www.bathome.net/lib/diy/mshta.js]http://www.bathome.net/lib/diy/mshta.js[/url]

直接运行生效,创建名为 mshta 的全局对象
会自动用 HTA:APPLICATION 标签创建一个名为 mshta 的对象
若已存在 HTA:APPLICATION 标签,则将其 id 改为 mshta
可查询当前脚本窗口的各类属性(有少数属性是可写的),具体属性请参考:[url]https://msdn.microsoft.com/en-us/library/ms536495(VS.85).aspx[/url]

例如[code]<script src=http://www.bathome.net/lib/diy/mshta.js></script>
<script>
//修改自 MS 官方的例子
sTempStr =
        "applicationName = " + mshta.applicationName + "\n" +
        "border           = " + mshta.border          + "\n" +
        "borderStyle    = " + mshta.borderStyle     + "\n" +
        "caption          = " + mshta.caption         + "\n" +
        "commandLine = " + mshta.commandLine     + "\n" +
        "icon             = " + mshta.icon            + "\n" +
        "maximizeButton = " + mshta.maximizeButton  + "\n" +
        "minimizeButton = " + mshta.minimizeButton  + "\n" +
        "showInTaskBar  = " + mshta.showInTaskbar   + "\n" +
        "singleInstance = " + mshta.singleInstance  + "\n" +  
        "sysMenu          = " + mshta.sysMenu         + "\n" +
        "version          = " + mshta.version         + "\n" +
        "windowState      = " + mshta.windowState     + "\n" ;

alert(sTempStr)

close()
</script>[/code]示例脚本:[attach]8311[/attach][/quote]

CrLf 发表于 2015-3-5 01:21

[i=s] 本帖最后由 CrLf 于 2015-3-9 01:34 编辑 [/i]

[b][size=5]自写库之调试相关:[/size][/b]

[quote][b]console[/b]

模拟一个 console 对象,并将其输出显示在当前窗口中。会导致当前窗口其他内容不可见
[url=http://www.bathome.net/lib/diy/console.js]http://www.bathome.net/lib/diy/console.js[/url]

直接运行生效,创建 console 对象,有效接口有 error、group、info、log、warn,还有一些尚无具体实现的接口
类似于 FireBug 的 console 对象,相当于 FireBug 阉割到只剩小拇指的版本,但加载快,而且不在 body 中也能生效
若在 head 中调用,将导致页面上其他内容不显示

例如[code]<body>
<p>若要保留页面上的内容,请在 body 中调用 console.js</p>
<script src=http://www.bathome.net/lib/diy/console.js></script>
<script>
console.log('普通青年')
console.warn('文艺青年')
console.error('213青年')
</script>
</body>[/code]示例脚本:[attach]8287[/attach]
[/quote]

[quote][b]loadFirebug[/b]

调用后自动引用官网的 Firebug-lite.js。最强大的网页调试工具之一,按 F12 可呼出控制窗口
[url=http://www.bathome.net/lib/diy/loadFirebug.js]http://www.bathome.net/lib/diy/loadFirebug.js[/url]

直接运行生效,创建 console 对象和 FirebugUI 框架
运行后自动加载 FireBug(比较慢),F12 快捷键呼出窗口

例如[code]<script src=http://www.bathome.net/lib/diy/loadFirebug.js></script>
<script>var arr=[1,2,3]
var obj={a:1,b:2}
//可在控制台中输入 arr 和 obj 查看变量值</script>[/code]示例脚本:[attach]8286[/attach][/quote]

CrLf 发表于 2015-3-5 01:21

[i=s] 本帖最后由 CrLf 于 2015-3-9 01:34 编辑 [/i]

[b][size=5]自写库之 WSH 环境兼容:[/size][/b]

[quote][b]WSH[/b]

模拟一个 WSH/WScript 对象
[url=http://www.bathome.net/lib/diy/WSH.js]http://www.bathome.net/lib/diy/WSH.js[/url]

直接运行生效,创建 WScript 和 WSH 对象,包含 WSH 宿主对象的所有方法和属性
模拟 WScript.exe 执行时的环境,以方便移植本地的 js、vbs 代码,仿真度高达 95%~


例如[code]@echo off
dir /b | mshta "%~f0" "^.{1,25}\.bat$" igm | findstr .*
pause & exit

<script src=http://www.bathome.net/lib/diy/WSH.js></script>
<script>
var text = WSH.StdIn.ReadAll()
//读取标准输入设备的输入

var re = new RegExp(WSH.Arguments(0),WSH.Arguments(1))
//根据命令行参数组成正则

var match = text.match(re)
//筛选出符合条件的文件名

if(match)WSH.Echo(match.join('\r\n'))
//若有匹配项则输出

close()
</script>[/code]示例脚本:[attach]8301[/attach][/quote]

CrLf 发表于 2015-3-5 01:21

[i=s] 本帖最后由 CrLf 于 2015-3-10 15:36 编辑 [/i]

[b][size=5]自写库之管理批处理之家的脚本库:[/size][/b]

[quote][b]Libs[/b]

创建一个 Libs 对象,用于管理批处理之家的脚本库
[url=http://www.bathome.net/lib/diy/Libs.js]http://www.bathome.net/lib/diy/Libs.js[/url]

直接运行生效,创建名为 Libs 的全局对象,内含 13 个方法(和 Tools.js 的用法基本一致):

[i]        test  测试能否正确在线获取库文件
        list  获取 bathome 的库列表
        find  在可用列表中搜索指定工具,不区分大小写
        check  根据列表提供的文件大小检查指定工具是否不同,不区分大小写
        include  引用本地库
        append  附加在线库
        down  在线获取 bathome 的库,并附加到页面中
        get  在线获取 bathome 的库,与 down 的唯一区别是文件若已经存在则不会下载
        del  删除指定的库
        exists  判断当前路径下是存在指定的库
        where  列举本机库所在的路径
        run  获取库的内容,运行并返回结果
        offline  将脚本转为离线[/i]


例如[code]<script src=http://www.bathome.net/lib/diy/Libs.js></script>

<script>
Libs.get('JSON2')
Libs.get('beautify')
//这两句调用了 JSON2.js 和 beautify.js,分别用于 JSON 解析和代码格式化
</script>

<script>
var list = Libs.list()
//这里获取了可用的在线库

var arr = []
for(var i in list){
        if(/日期|时间/.test(list[i].helpString)){
                arr.push(list[i])
        }
}
//这里遍历在线库列表,找到帮助信息包含“时间”与“日期”的项

var json = JSON.stringify(arr)
//将结果转为 JSON

var text = js_beautify(json)
//将结果转为便于阅读的格式

alert(text)
//输出结果

close()
</script>[/code]示例脚本:[attach]8312[/attach][/quote]

CrLf 发表于 2015-3-5 01:21

[i=s] 本帖最后由 CrLf 于 2015-3-28 12:34 编辑 [/i]

[b][size=5]自写库之管理第三方工具:[/size][/b]

[quote][b]Tools[/b]

创建一个 Tools 对象,用于管理批处理之家的脚本库
[url=http://www.bathome.net/lib/diy/Tools.js]http://www.bathome.net/lib/diy/Tools.js[/url]

直接运行生效,创建名为 Tools 的全局对象,内含 12 个方法(和 Libs.js 的用法基本一致):

[i]        test  测试能否正确在线获取库文件
        list  获取第三方命令行工具列表
        find  在可用列表中搜索指定工具,不区分大小写
        check  根据列表提供的文件大小检查指定工具是否不同,不区分大小写
        down  在线获取第三方命令行工具
        get  在线获取第三方命令行工具,与 down 的唯一区别是文件若已经存在则不会下载
        del  删除指定目录下的第三方工具
        exists  判断当前路径以及 %PATH% 路径下是存在指定的外部命令
        where  列举本机上指定的外部命令所在路径
        exec  执行命令
        cmd  使用 cmd 执行命令,并返回标准输出
        run  以指定方式运行指定程序[/i]


例如[code]@echo off & ( break >"%~f0:Zone.Identifier" ) 2>nul
mshta "%~f0"
::在批处理中将自身当作 hta 脚本运行,以下载 seq.exe

seq  1  0.5  10
::调用 seq 输出 1~10 的数字,步数为 0.5

pause & exit /b
::下面是 hta 部分

<script src=http://www.bathome.net/lib/diy/Tools.js></script>

<script>
Tools.get('seq')
//获取 seq 命令

close()
</script>[/code]示例脚本:[attach]8467[/attach][/quote]

CrLf 发表于 2015-3-5 01:22

[i=s] 本帖最后由 CrLf 于 2015-3-25 00:05 编辑 [/i]

[b][size=5]自写库之 VBS 调用相关:[/size][/b]

[quote][b]vbs[/b]

在 JScript 中调用 VBScript 函数
[url=http://www.bathome.net/lib/diy/vbs.js]http://www.bathome.net/lib/diy/vbs.js[/url]

直接运行生效,创建 vbs、inputbox、msgbox、bin2asc、asc2bin 函数,用法详见原脚本
基于 MSScriptControl.ScriptControl 控件
本是为 JSConsole 写的,在 mshta 中其实没有什么意义了

例如[code]<script src=http://www.bathome.net/lib/diy/vbs.js></script>
<script>
msgbox('我来自批处理之家',4096,'置顶提示')
//调用 msgbox 的一种方式

vbs('msgbox("我来自批处理之家",4096,"置顶提示")')
//调用 msgbox 的另一种方式

alert('"12345" 的字节码对应:'+bin2asc('12345'))
//用 vbs 拆解字节流
</script>[/code]示例脚本:[attach]8431[/attach][/quote]

[quote][b]VBScript[/b]

在 JScript 中调用 VBScript 函数
[url=http://www.bathome.net/lib/diy/VBScript.js]http://www.bathome.net/lib/diy/VBScript.js[/url]

直接运行生效,创建 VBScript 对象和 VBScriptClass 类,包含 vbs 的所有内置函数的同名接口
VBScript 对象依赖于 VBScriptClass 类
VBScriptClass 类是完全由 VBS 创建的

例如[code]<script src=http://www.bathome.net/lib/diy/VBScript.js></script>
<script>
var now = VBScript.Now()
var after7days = VBScript.DateAdd('d',now,7)
VBScript.MsgBox(after7days)

//显示7天后的日期
//实际上调用的是 VBScriptClass.Now0、VBScriptClass.DateAdd3、VBScriptClass.MsgBox1
</script>[/code]示例脚本:[attach]8432[/attach][/quote]

CrLf 发表于 2015-3-5 01:22

[i=s] 本帖最后由 CrLf 于 2015-3-25 00:01 编辑 [/i]

[b][size=5]自写库之动态执行:[/size][/b]

[quote]RunCommand

将接收到的命令行参数当作 js 语句来运行
[url]http://www.bathome.net/lib/diy/RunCommand.js[/url]

直接运行生效,无接口
调用时,立即将整个命令行参数作为 js 语句执行,无返回值

例如[code]<!-- :
@echo off
mshta "%~f0" alert('你好') ;alert('我来自批处理之家');close()
pause & exit /b
-->
<script src=http://www.bathome.net/lib/diy/RunCommand.js></script>[/code]示例脚本:[attach]8429[/attach][/quote]

CrLf 发表于 2015-3-5 06:25

[i=s] 本帖最后由 CrLf 于 2015-3-28 12:35 编辑 [/i]

[b][size=5]自写库之超级标签:[/size][/b]

[quote][b]code[/b]

可在一个标签里写入多种语言的脚本
[url=http://www.bathome.net/lib/diy/code.js]http://www.bathome.net/lib/diy/code.js[/url]

直接运行生效,无接口
在页面加载完毕后对所有 language=code 或 type=text/code 的 <script> 标签进行解析替换
将标签中各种语言拆分成不同的 <script> 标签

例如[code]<script src=http://www.bathome.net/lib/diy/code.js></script>
<script type=text/code>
        --------?js--------
        test("test")
        close()
        ------%vbs--------
        Sub test(str)
                MsgBox str
        End Sub
        '前缀 % 表示优先加载,含有 % 的部分将优先执行
</script>
[/code]示例脚本:[attach]8468[/attach][/quote]

CrLf 发表于 2015-3-5 06:26

[i=s] 本帖最后由 CrLf 于 2015-3-28 12:37 编辑 [/i]

[b][size=5]自写库之原型链扩展:[/size][/b]

[quote][b]DIYprototype[/b]

在 Prototype.js 的基础上增加了一些继承方法
[url=http://www.bathome.net/lib/diy/DIYprototype.js]http://www.bathome.net/lib/diy/DIYprototype.js[/url]

直接运行生效,会直接修改部分对象的 prototype 原型链
部分方法需要 Prototype 库和 Function 库支持

例如[code]<script src=http://www.bathome.net/lib/Prototype.js></script>
<script src=http://www.bathome.net/lib/diy/Function.js></script>
<script src=http://www.bathome.net/lib/diy/DIYprototype.js></script>
<script>
var array = ['批处理之家','js脚本库',2015,true]

alert(array.EACH(function(a,b){return 'arr['+b+'] is '+typename(a)}).join('\r\n'))
//显示数组中各个函数的内容和类型
//EACH 可对数组的每个元素分别执行指定函数,并将返回值保存为数组返回

close()
</script>[/code]示例脚本:[attach]8471[/attach][/quote]

[quote][b]callBack[/b]

创建各种回调函数,可用于辅助 Array.prototype.each
[url=http://www.bathome.net/lib/diy/callBack.js]http://www.bathome.net/lib/diy/callBack.js[/url]

直接运行生效,会修改 Function 对象的 prototype 原型链,其中以 *_ 开头的方法都是用于创建回调函数
和 Array 的 EACH、_EACH 方法(来自 DIYprototype 库)是绝配

例如[code]<script src=http://www.bathome.net/lib/Prototype.js></script>
<script src=http://www.bathome.net/lib/diy/DIYprototype.js></script>
<script src=http://www.bathome.net/lib/diy/callBack.js></script>
<script>
array = [123,'bbs.bathome.net','批处理之家']

text = array._EACH(                //_EACH 可对数组的每个元素分别执行指定函数,并将返回值保存为数组返回
                callBack                //此处仅用于引用 M_toString 和 P_length
                .M_toString()        //M_toString() 取得一个用于调用 toString 的回调函数
                .P_length()        //P_length 取得一个用于返回 length 的回调函数
                .M_toString(2)
        )
//分别获取数组元素的长度,返回长度的二进制值

alert(text)

close()
</script>[/code]示例脚本:[attach]8472[/attach][/quote]

CrLf 发表于 2015-3-5 06:27

[i=s] 本帖最后由 CrLf 于 2015-3-28 12:38 编辑 [/i]

[b][size=5]自写库之编码转换:[/size][/b]

[quote][b]iconv[/b]

字符编码转换
[url=http://www.bathome.net/lib/diy/iconv.js]http://www.bathome.net/lib/diy/iconv.js[/url]

直接运行生效,提供 iconv 函数及其子函数

例如[code]<script src=http://www.bathome.net/lib/diy/iconv.js></script>
<script>
var utf8string = '鎵瑰鐞嗕箣瀹讹紝浣犲ソ'

var gb2312string = iconv(utf8string,'utf-8','gb2312')
alert(gb2312string)
//调用 iconv 函数转换字符串

iconv.saveText(gb2312string,'文本.txt','gb2312')
//调用 iconv.saveText 将字符串以 gb2312 编码保存到文本

close()
</script>[/code]示例脚本:[attach]8473[/attach][/quote]

CrLf 发表于 2015-3-5 06:27

[i=s] 本帖最后由 CrLf 于 2015-3-28 12:39 编辑 [/i]

[b][size=5]自写库之信息枚举:[/size][/b]

[quote][b]list[/b]

用于罗列各种信息的自定义的函数
[url=http://www.bathome.net/lib/diy/list.js]http://www.bathome.net/lib/diy/list.js[/url]

直接运行生效,提供 list 函数及其子函数

例如[code]<script src=http://www.bathome.net/lib/diy/list.js></script>
<script>
var mapobject = {a:123,b:456}
alert(list(mapobject).join('\n'))
//列举对象的元素

var comobject = list.com()
alert('本机已注册的组件数量为:' + comobject.length)
//获取已注册的组件数量

close()
</script>[/code]示例脚本:[attach]8474[/attach][/quote]

CrLf 发表于 2015-3-5 06:27

[i=s] 本帖最后由 CrLf 于 2015-3-28 12:40 编辑 [/i]

[b][size=5]自写库之常用函数:[/size][/b]

[quote][b]Function[/b]

各种自定义的常用函数,基于 WSH.js 和 Prototype.js
[url=http://www.bathome.net/lib/diy/Function.js]http://www.bathome.net/lib/diy/Function.js[/url]

直接运行生效,提供 getopts、type、echo、download、clone 等函数
是比较基础的函数集

例如[code]<script src=http://www.bathome.net/lib/Prototype.js></script>
<script src=http://www.bathome.net/lib/diy/WSH.js></script>
<script src=http://www.bathome.net/lib/diy/Function.js></script>
<script>
download('http://bbs.bathome.net/index.php')
//下载批处理之家的首页

alert(getopts('命令行 "切分 测试"'))
//按 windows 下的规则切分命令行参数

close()
</script>[/code]示例脚本:[attach]8476[/attach][/quote]

[quote][b]GetRequest[/b]

用于取得URL地址中的变量
[url=http://www.bathome.net/lib/diy/GetRequest.js]http://www.bathome.net/lib/diy/GetRequest.js[/url]

直接运行生效,提供 GetRequest 函数

例如[code]<script src=http://www.bathome.net/lib/diy/GetRequest.js></script>
<script>
var values = GetRequest()
//获取URL中的变量,保存在对象中

alert(values['批处理之家'])
alert(values['楼主'])
//显示URL中指定对象的变量值

close()
</script>[/code]示例脚本:[attach]8433[/attach][/quote]

[quote][b]ch2num[/b]

阿拉伯数字与中文数字互转
[url=http://www.bathome.net/lib/diy/ch2num.js]http://www.bathome.net/lib/diy/ch2num.js[/url]

直接运行生效,提供 ch2num、num2chs、num2cht、num2sum 函数

例如[code]<script src=http://www.bathome.net/lib/diy/ch2num.js></script>
<script>
alert(ch2num('中文数字壹佰叁拾贰万肆仟贰佰壹拾叁圆肆角贰分'))
//大写数字转小写

alert(num2chs('阿拉伯数字1324213.42'))
//小写数字转大写

close()
</script>[/code]示例脚本:[attach]8475[/attach][/quote]

yu2n 发表于 2015-3-5 09:28

严重支持。

自写库为什么不署上自己的大名呢?

抛弃了IE6?

来个客户端IP显示功能吧。

CrLf 发表于 2015-3-5 12:24

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=163495&ptid=34544]16#[/url] [i]yu2n[/i] [/b]


    忘了加…
    特地挑了支持 ie6 ie7 的库啊,本来还有 d3.js,后来都撤了,xp 上的 mshta 好像就是 ie6 内核的
    ip 好办,回头集成一个集校时、显 ip 于一身的库

yu2n 发表于 2015-3-5 13:07

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=163514&ptid=34544]17#[/url] [i]CrLf[/i] [/b]

Windows Server 2003 的 IE6 测试 HTA 有问题。
可能是安全性方面的原因吧。

CrLf 发表于 2015-3-5 17:53

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=163518&ptid=34544]18#[/url] [i]yu2n[/i] [/b]


    有哪些比较好的库是 ie6 下能用的,推荐几个呗?
    也欢迎自己实现,写好后如果完整、安全而且语法不至于太过怪异的话,我也把它加到在线库里去

CrLf 发表于 2015-3-7 23:36

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=163495&ptid=34544]16#[/url] [i]yu2n[/i] [/b]


    搜了一下,发现已经有很多类似接口,有的甚至能直接返回 js 代码,就不搞了
    不过都是 ip 相关的,没找到干净返回时间的接口
    url 已更新到2楼

依山居 发表于 2015-10-16 00:02

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=163685&ptid=34544]20#[/url] [i]CrLf[/i] [/b]


    前些时间我也收集了一些,有些网站的接口是对curl的UA做了处理,如果是用curl访问的话,得到就是比较干净的文本。

[url]http://my.oschina.net/ysj/blog/511724[/url][code]#满足了一下自己的搜集癖,搜集了不少可以用来查询外网IP的网址和方法。
#国内某网站的接口,只返回IP
curl ip.6655.com/ip.aspx
curl whatismyip.akamai.com
#更多用法访问ifconfig.co
wget -qO - ifconfig.co
curl icanhazip.com
dig +short myip.opendns.com @resolver1.opendns.com
curl ident.me
curl v4.ident.me
curl v6.ident.me
#慢
curl curlmyip.com
curl ifconfig.me
curl inet-ip.info
#返回IP和地区
curl ip.6655.com/ip.aspx?area=1
curl ip.cn
curl cip.cc
curl ipip.net
#需要翻x墙,只返回IP
curl ip.appspot.com

#参考 http://unix.stackexchange.com/questions/22615/how-can-i-get-my-external-ip-address-in-bash
#有人给了以下测试方法

wget https://raw.githubusercontent.com/rsp/scripts/master/externalip-benchmark
chmod a+x externalip-benchmark
./externalip-benchmark

#返回JSON格式的数据
C:\>curl httpbin.org/get
{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.28.1"
  },
  "origin": "222.216.164.78",
  "url": "http://httpbin.org/get"
}
C:\>curl httpbin.org/ip
{
  "origin": "116.11.199.77"
}
[/code]

CrLf 发表于 2015-10-16 00:05

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=175848&ptid=34544]21#[/url] [i]依山居[/i] [/b]


    nice,不过其实之前有上传一个 ip.php 到咱网站:[url]http://www.bathome.net/s/ip.php[/url]

CrLf 发表于 2015-11-21 16:50

回头发一个更劲爆的玩意,还是这个系列,改进一下

CrLf 发表于 2015-11-24 17:59

折腾数日,大功告成
等 Batcher 伤愈,哥来发一个牛逼哄哄的新玩具

kaze 发表于 2020-6-5 16:52

vbs  diy        在 js 中模拟使用 vbs 代码        [url]http://www.bathome.net/lib/diy/vbs.js[/url];第一句重要代码var sc = new ActiveXObject('MSScriptControl.ScriptControl');win64位直接出错,搜也搜不到好的解决方法。

老刘1号 发表于 2021-7-31 19:09

Math.js 好像无了
[url]http://www.bathome.net/lib/Math.js[/url]

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.