Board logo

标题: [原创教程] 批处理之家 js 在线脚本库 [打印本页]

作者: CrLf    时间: 2015-3-4 22:13     标题: 批处理之家 js 在线脚本库

本帖最后由 CrLf 于 2016-1-12 15:47 编辑

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

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


该脚本库主要用于 hta 环境,尤其适合用在在线 HTA 脚本bat+hta 混编的情况下
这里举几个例子:

第一个例子,隐藏下载指定的第三方工具
(由 Batch-CN 提供)
请保存为 .bat 后缀名:
  1. <!-- :
  2. @echo off & ( break >"%~f0:Zone.Identifier" ) 2>nul
  3. mshta "%~f0"
  4. printf.exe "你好,我是printf.exe\n"
  5. pause
  6. -->
  7. <script src=http://bbs.bathome.net/lib/diy/hide.js></script>
  8. <script src=http://bbs.bathome.net/lib/diy/Tools.js></script>
  9. <script>
  10. Tools.get('printf')
  11. //调用 Tools 对象的 get 方法在线获取第三方工具 printf
  12. //若已经存在可调用的 printf.exe,则不重复下载
  13. //引用 Batch-CN 的集成资源,感谢 bailong360 提供帮助
  14. </script>
复制代码
示例脚本:[attach]9129[/attach]

第二个例子,解析地址中的变量和命令行参数
利用 WSH.js 模拟出 WSH 环境(相似度>90%)
请保存为 .bat 后缀名:
  1. @echo off
  2. mshta "%~f0" 【0】开关测试 "【1】嵌套的""测试"   "【2】单个参数测试","【3】其他分隔符测试" | more
  3. pause&exit
  4. >>>>>>>>>>
  5. <script src=http://www.bathome.net/lib/diy/Libs.js></script>
  6. <script>
  7. Libs.get('WSH')
  8. Libs.get('hide')
  9. </script>
  10. <script>
  11. for(var i=0;i<WScript.Arguments.length;i++){
  12.         WSH.Echo(WScript.Arguments(i))
  13. }
  14. </script>
复制代码
示例脚本:[attach]8297[/attach]

第三个例子,在一个标签中使用所有语言
使用 code.js 解析 language=code 的 script 节点,并处理为
这里用不到批处理,所以保存为 .hta 就好了:
  1. <script src=http://www.bathome.net/lib/diy/hide.js></script>
  2. <script src=http://www.bathome.net/lib/diy/code.js></script>
  3. <script src=http://www.bathome.net/lib/coffeescript.js></script>
  4. <script language=code>
  5. -------VBScript------
  6. MsgBox "我是 VBScript"
  7. -------JavaScript------
  8. alert('我是 JavaScript')
  9. -------CoffeeScript------
  10. alert '我是 CoffeeScript'
  11. </script>
复制代码
这里 -------JavaScript------ 中的 - 也可以改用连续超过三次的其他部分字符
比如 ###JavaScript###,或 ~~~JavaScript~~~
示例脚本:[attach]8294[/attach]


友情提示
如果运行前出现这个提示,请取消“打开此文件前总是”,然后点击运行:
[attach]8466[/attach]
或者在文件属性里点击解除锁定亦可
作者: CrLf    时间: 2015-3-4 22:18

本帖最后由 CrLf 于 2015-11-23 17:51 编辑

19 个自写库
名称 版本信息帮助信息bathome 库地址
callBack  diy创建各种回调函数,可用于辅助 Array.prototype.eachhttp://www.bathome.net/lib/diy/callBack.js
ch2num  diy阿拉伯数字与中文数字互转http://www.bathome.net/lib/diy/ch2num.js
code  diy可在一个标签里写入多种语言的脚本http://www.bathome.net/lib/diy/code.js
console  diy模拟一个 console 对象,并将其输出显示在当前窗口中。会导致当前窗口其他内容不可见http://www.bathome.net/lib/diy/console.js
DIYprototype  diy在 Prototype_MOD.js 的基础上增加了一些继承方法http://www.bathome.net/lib/diy/DIYprototype.js
Function  diy各种自定义的常用函数,基于 WSH.js 和 Prototype.jshttp://www.bathome.net/lib/diy/Function.js
GetRequest  diy用于取得URL地址中的变量http://www.bathome.net/lib/diy/GetRequest.js
hide  diy隐藏 mshta 窗口,运行后将导致 setTimeout 和 setInterval 失效http://www.bathome.net/lib/diy/hide.js
iconv  diy字符编码转换http://www.bathome.net/lib/diy/iconv.js
Libs  diy创建一个 Libs 对象,用于管理批处理之家的脚本库http://www.bathome.net/lib/diy/Libs.js
list  diy用于罗列各种信息的自定义的函数http://www.bathome.net/lib/diy/list.js
loadFirebug  linkto 1.4.0 compressed调用后自动引用官网的 Firebug-lite.js。最强大的网页调试工具之一,按 F12 可呼出控制窗口http://www.bathome.net/lib/diy/loadFirebug.js
mshta  diy创建一个 mshta 对象,以获取窗口信息和改变窗口形态http://www.bathome.net/lib/diy/mshta.js
Tools  diy创建一个 Tools 对象,用于管理第三方命令行工具http://www.bathome.net/lib/diy/Tools.js
RunCommand  diy将接收到的命令行参数当作 js 语句来运行http://www.bathome.net/lib/diy/RunCommand.js
vbs  diy在 js 中模拟使用 vbs 代码http://www.bathome.net/lib/diy/vbs.js
VBScript  diy在 JScript 中调用 VBScript 函数http://www.bathome.net/lib/diy/VBScript.js
WSH  diy模拟一个 WSH/WScript 对象http://www.bathome.net/lib/diy/WSH.js
Zones0  diy设置 ie 区域设置等级为最低,以免在使用 iframe 访问网页时弹出提示http://www.bathome.net/lib/diy/Zones0.js

45 个转载的库
名称 版本信息帮助信息bathome 库地址
accounting  0.4.1 compressed数字格式化通用类http://www.bathome.net/lib/accounting.js
ActiveXFileWrapper  N/A mod基于 fso 和 ado 的封装类,可以直观地操作文件,默认编码为 UTF-8http://www.bathome.net/lib/ActiveXFileWrapper.js
beautify-css  1.5.4css 格式化http://www.bathome.net/lib/beautify-css.js
beautify-html  1.5.4html 格式化http://www.bathome.net/lib/beautify-html.js
beautify  1.5.4js 格式化http://www.bathome.net/lib/beautify.js
bignumber  2.0.0 compressed超大数字运算http://www.bathome.net/lib/bignumber.js
Blob  N/A模拟 Blob 对象,是一个可以存储二进制文件的容器http://www.bathome.net/lib/Blob.js
CoffeeScript  1.9.0 compressedCoffeeScript 是 JavaScript 优雅的转义语言,为原生语法添加许多语法糖http://www.bathome.net/lib/coffeescript.js
cookies  1.2.0 compressed便捷地读写Cookiehttp://www.bathome.net/lib/cookies.js
csv  3.6.1 compressedCSV的JavaScript解析库http://www.bathome.net/lib/csv.js
diff  0.3.0 compressed比较对象之间的差异http://www.bathome.net/lib/diff.js
difflib  1.0.0 merge diffview.js比较文本之间的差异,还能展现在网页上http://www.bathome.net/lib/difflib.js
Dojo  1.10.4 compressed著名的JS工具包http://www.bathome.net/lib/dojo.js
Fuse  1.2.2 compressed轻量级模糊查询http://www.bathome.net/lib/fuse.js
Ini  1.0.0INI的JavaScript解析库http://www.bathome.net/lib/ini.js
jQuery  1.11.2 compressed继prototype之后又一个优秀的Javascrīpt框架http://www.bathome.net/lib/jquery.js
js2coffee  2.0 compressed可将 JavaScript 翻译为 CoffeeScript.jshttp://www.bathome.net/lib/js2coffee.js
Json2  2014-02-04 compressed模拟 JSON 对象http://www.bathome.net/lib/json2.js
JSZip  2.4.0 compressed用 javascript 生成 zip 文件http://www.bathome.net/lib/jszip.js
KeyboardJS  0.4.1 compressed支持单一快捷键或者组合键的库http://www.bathome.net/lib/keyboard.js
Keypress  2.1.0 compressed有着许多特别功能的输入捕捉库http://www.bathome.net/lib/keypress.js
lazy  0.4.0 compressed类似 Underscore,但使用懒惰求值的办法大幅提升效率http://www.bathome.net/lib/lazy.js
lodash  2.4.1 compat完全兼容 Underscore 语法的增强库,增加了许多新的方法http://www.bathome.net/lib/lodash.js
Math  1.3.0 compressed多用途的JavaScript数学库http://www.bathome.net/lib/Math.js
moment  2.8.4 with-locales compressed为日期计算提供全面的方法http://www.bathome.net/lib/moment.js
mootools  1.5.1 compressed一个简洁,模块化,面向对象的开源JavaScript web应用框架http://www.bathome.net/lib/mootools.js
mousetrap  1.4.6 compressed快捷键库,可直观地定义组合键http://www.bathome.net/lib/mousetrap.js
naturalSort  0.7支持对字符串中的小数、ip、文件名、日期等进行自然排序自然排序http://www.bathome.net/lib/naturalSort.js
numeric  1.2.6 compressed支持特殊的数学计算,擅长本地执行小型计算http://www.bathome.net/lib/numeric.js
numbers  0.5.0一个可以运算复杂数据运算的js库,名字叫Numbers.js,可以进行三角,矩阵等复杂运算http://www.bathome.net/lib/numbers.js
Prototype  1.7.2 compressed非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajaxhttp://www.bathome.net/lib/Prototype.js
RequireJS  2.1.16 mod非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一http://www.bathome.net/lib/require.js
reveal  3.1.0基于CSS的幻灯片工具http://www.bathome.net/lib/reveal.js
sea  2.2.3 compressed一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制http://www.bathome.net/lib/sea.js
sjcl  N/A compressed由斯坦福大学计算机安全实验室创立的项目,旨在创建一个安全、快速、短小精悍、易使用、跨浏览器的JavaScript加密库http://www.bathome.net/lib/sjcl.js
shortcut  2.01.B提供更为方便地处理键盘快捷键的函数http://www.bathome.net/lib/shortcut.js
sprintf  1.0.2 mod模拟 sprintf/vsprintfhttp://www.bathome.net/lib/sprintf.js
strftime  0.8.2 compressed模拟 strftimehttp://www.bathome.net/lib/strftime.js
Sugar  1.4.1 full compressed为内置对象扩展了一些有用的、直观的方法,会影响 prototype,和 Prototype_MOD.js 有部分重合http://www.bathome.net/lib/Sugar.js
taffy  2.7 compressed基于 JSON 管理数据库http://www.bathome.net/lib/taffy.js
typeName  1.0.1比 typeof 得到的结果准确一点,但其实更建议调用 vbs 的 TypeNamehttp://www.bathome.net/lib/typename.js
Underscore  1.7.0 compressed提供了几十种函数式编程的方法,大大方便了Javascript的编程http://www.bathome.net/lib/underscore.js
XDate  0.8 compressed为日期计算提供全面的方法http://www.bathome.net/lib/xdate.js
XRegExp  2.0.0 compressed增加了更多未来浏览器可能包含的功能(ECMAScript 4 - ES4)http://www.bathome.net/lib/xregexp.js
zip  N/A用 JavaScript 实现的 zip 压缩和解压缩工具包http://www.bathome.net/lib/zip.js


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

查询本机外网 ip

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

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

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

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

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


查询指定 ip 归属地

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

http://int.dpool.sina.com.cn/ipl ... hp?ip=117.25.131.86
由新浪提供

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

作者: CrLf    时间: 2015-3-4 22:18

本帖最后由 CrLf 于 2015-8-31 18:10 编辑

自写库之低调运行:

hide

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

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

例如
  1. <script src=http://www.bathome.net/lib/diy/hide.js></script>
  2. <script>
  3. KEEP_RUNNING = 5
  4. setInterval(function(){alert('KEEP_RUNNING =' + --KEEP_RUNNING)},1000)
  5. </script>
复制代码
示例脚本:[attach]8282[/attach]

Zones0

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

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

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

作者: CrLf    时间: 2015-3-5 01:21

本帖最后由 CrLf 于 2015-3-9 02:55 编辑

自写库之创建 APPLICATION 对象:

mshta

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

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

例如
  1. <script src=http://www.bathome.net/lib/diy/mshta.js></script>
  2. <script>
  3. //修改自 MS 官方的例子
  4. sTempStr =
  5. "applicationName = " + mshta.applicationName + "\n" +
  6. "border           = " + mshta.border          + "\n" +
  7. "borderStyle    = " + mshta.borderStyle     + "\n" +
  8. "caption          = " + mshta.caption         + "\n" +
  9. "commandLine = " + mshta.commandLine     + "\n" +
  10. "icon             = " + mshta.icon            + "\n" +
  11. "maximizeButton = " + mshta.maximizeButton  + "\n" +
  12. "minimizeButton = " + mshta.minimizeButton  + "\n" +
  13. "showInTaskBar  = " + mshta.showInTaskbar   + "\n" +
  14. "singleInstance = " + mshta.singleInstance  + "\n" +  
  15. "sysMenu          = " + mshta.sysMenu         + "\n" +
  16. "version          = " + mshta.version         + "\n" +
  17. "windowState      = " + mshta.windowState     + "\n" ;
  18. alert(sTempStr)
  19. close()
  20. </script>
复制代码
示例脚本:[attach]8311[/attach]

作者: CrLf    时间: 2015-3-5 01:21

本帖最后由 CrLf 于 2015-3-9 01:34 编辑

自写库之调试相关:

console

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

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

例如
  1. <body>
  2. <p>若要保留页面上的内容,请在 body 中调用 console.js</p>
  3. <script src=http://www.bathome.net/lib/diy/console.js></script>
  4. <script>
  5. console.log('普通青年')
  6. console.warn('文艺青年')
  7. console.error('213青年')
  8. </script>
  9. </body>
复制代码
示例脚本:[attach]8287[/attach]

loadFirebug

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

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

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

作者: CrLf    时间: 2015-3-5 01:21

本帖最后由 CrLf 于 2015-3-9 01:34 编辑

自写库之 WSH 环境兼容:

WSH

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

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


例如
  1. @echo off
  2. dir /b | mshta "%~f0" "^.{1,25}\.bat$" igm | findstr .*
  3. pause & exit
  4. <script src=http://www.bathome.net/lib/diy/WSH.js></script>
  5. <script>
  6. var text = WSH.StdIn.ReadAll()
  7. //读取标准输入设备的输入
  8. var re = new RegExp(WSH.Arguments(0),WSH.Arguments(1))
  9. //根据命令行参数组成正则
  10. var match = text.match(re)
  11. //筛选出符合条件的文件名
  12. if(match)WSH.Echo(match.join('\r\n'))
  13. //若有匹配项则输出
  14. close()
  15. </script>
复制代码
示例脚本:[attach]8301[/attach]

作者: CrLf    时间: 2015-3-5 01:21

本帖最后由 CrLf 于 2015-3-10 15:36 编辑

自写库之管理批处理之家的脚本库:

Libs

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

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

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



例如
  1. <script src=http://www.bathome.net/lib/diy/Libs.js></script>
  2. <script>
  3. Libs.get('JSON2')
  4. Libs.get('beautify')
  5. //这两句调用了 JSON2.js 和 beautify.js,分别用于 JSON 解析和代码格式化
  6. </script>
  7. <script>
  8. var list = Libs.list()
  9. //这里获取了可用的在线库
  10. var arr = []
  11. for(var i in list){
  12. if(/日期|时间/.test(list[i].helpString)){
  13. arr.push(list[i])
  14. }
  15. }
  16. //这里遍历在线库列表,找到帮助信息包含“时间”与“日期”的项
  17. var json = JSON.stringify(arr)
  18. //将结果转为 JSON
  19. var text = js_beautify(json)
  20. //将结果转为便于阅读的格式
  21. alert(text)
  22. //输出结果
  23. close()
  24. </script>
复制代码
示例脚本:[attach]8312[/attach]

作者: CrLf    时间: 2015-3-5 01:21

本帖最后由 CrLf 于 2015-3-28 12:34 编辑

自写库之管理第三方工具:

Tools

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

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

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



例如
  1. @echo off & ( break >"%~f0:Zone.Identifier" ) 2>nul
  2. mshta "%~f0"
  3. ::在批处理中将自身当作 hta 脚本运行,以下载 seq.exe
  4. seq  1  0.5  10
  5. ::调用 seq 输出 1~10 的数字,步数为 0.5
  6. pause & exit /b
  7. ::下面是 hta 部分
  8. <script src=http://www.bathome.net/lib/diy/Tools.js></script>
  9. <script>
  10. Tools.get('seq')
  11. //获取 seq 命令
  12. close()
  13. </script>
复制代码
示例脚本:[attach]8467[/attach]

作者: CrLf    时间: 2015-3-5 01:22

本帖最后由 CrLf 于 2015-3-25 00:05 编辑

自写库之 VBS 调用相关:

vbs

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

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

例如
  1. <script src=http://www.bathome.net/lib/diy/vbs.js></script>
  2. <script>
  3. msgbox('我来自批处理之家',4096,'置顶提示')
  4. //调用 msgbox 的一种方式
  5. vbs('msgbox("我来自批处理之家",4096,"置顶提示")')
  6. //调用 msgbox 的另一种方式
  7. alert('"12345" 的字节码对应:'+bin2asc('12345'))
  8. //用 vbs 拆解字节流
  9. </script>
复制代码
示例脚本:[attach]8431[/attach]

VBScript

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

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

例如
  1. <script src=http://www.bathome.net/lib/diy/VBScript.js></script>
  2. <script>
  3. var now = VBScript.Now()
  4. var after7days = VBScript.DateAdd('d',now,7)
  5. VBScript.MsgBox(after7days)
  6. //显示7天后的日期
  7. //实际上调用的是 VBScriptClass.Now0、VBScriptClass.DateAdd3、VBScriptClass.MsgBox1
  8. </script>
复制代码
示例脚本:[attach]8432[/attach]

作者: CrLf    时间: 2015-3-5 01:22

本帖最后由 CrLf 于 2015-3-25 00:01 编辑

自写库之动态执行:

RunCommand

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

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

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

作者: CrLf    时间: 2015-3-5 06:25

本帖最后由 CrLf 于 2015-3-28 12:35 编辑

自写库之超级标签:

code

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

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

例如
  1. <script src=http://www.bathome.net/lib/diy/code.js></script>
  2. <script type=text/code>
  3. --------?js--------
  4. test("test")
  5. close()
  6. ------%vbs--------
  7. Sub test(str)
  8. MsgBox str
  9. End Sub
  10. '前缀 % 表示优先加载,含有 % 的部分将优先执行
  11. </script>
复制代码
示例脚本:[attach]8468[/attach]

作者: CrLf    时间: 2015-3-5 06:26

本帖最后由 CrLf 于 2015-3-28 12:37 编辑

自写库之原型链扩展:

DIYprototype

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

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

例如
  1. <script src=http://www.bathome.net/lib/Prototype.js></script>
  2. <script src=http://www.bathome.net/lib/diy/Function.js></script>
  3. <script src=http://www.bathome.net/lib/diy/DIYprototype.js></script>
  4. <script>
  5. var array = ['批处理之家','js脚本库',2015,true]
  6. alert(array.EACH(function(a,b){return 'arr['+b+'] is '+typename(a)}).join('\r\n'))
  7. //显示数组中各个函数的内容和类型
  8. //EACH 可对数组的每个元素分别执行指定函数,并将返回值保存为数组返回
  9. close()
  10. </script>
复制代码
示例脚本:[attach]8471[/attach]

callBack

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

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

例如
  1. <script src=http://www.bathome.net/lib/Prototype.js></script>
  2. <script src=http://www.bathome.net/lib/diy/DIYprototype.js></script>
  3. <script src=http://www.bathome.net/lib/diy/callBack.js></script>
  4. <script>
  5. array = [123,'bbs.bathome.net','批处理之家']
  6. text = array._EACH( //_EACH 可对数组的每个元素分别执行指定函数,并将返回值保存为数组返回
  7. callBack //此处仅用于引用 M_toString 和 P_length
  8. .M_toString() //M_toString() 取得一个用于调用 toString 的回调函数
  9. .P_length() //P_length 取得一个用于返回 length 的回调函数
  10. .M_toString(2)
  11. )
  12. //分别获取数组元素的长度,返回长度的二进制值
  13. alert(text)
  14. close()
  15. </script>
复制代码
示例脚本:[attach]8472[/attach]

作者: CrLf    时间: 2015-3-5 06:27

本帖最后由 CrLf 于 2015-3-28 12:38 编辑

自写库之编码转换:

iconv

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

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

例如
  1. <script src=http://www.bathome.net/lib/diy/iconv.js></script>
  2. <script>
  3. var utf8string = '鎵瑰鐞嗕箣瀹讹紝浣犲ソ'
  4. var gb2312string = iconv(utf8string,'utf-8','gb2312')
  5. alert(gb2312string)
  6. //调用 iconv 函数转换字符串
  7. iconv.saveText(gb2312string,'文本.txt','gb2312')
  8. //调用 iconv.saveText 将字符串以 gb2312 编码保存到文本
  9. close()
  10. </script>
复制代码
示例脚本:[attach]8473[/attach]

作者: CrLf    时间: 2015-3-5 06:27

本帖最后由 CrLf 于 2015-3-28 12:39 编辑

自写库之信息枚举:

list

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

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

例如
  1. <script src=http://www.bathome.net/lib/diy/list.js></script>
  2. <script>
  3. var mapobject = {a:123,b:456}
  4. alert(list(mapobject).join('\n'))
  5. //列举对象的元素
  6. var comobject = list.com()
  7. alert('本机已注册的组件数量为:' + comobject.length)
  8. //获取已注册的组件数量
  9. close()
  10. </script>
复制代码
示例脚本:[attach]8474[/attach]

作者: CrLf    时间: 2015-3-5 06:27

本帖最后由 CrLf 于 2015-3-28 12:40 编辑

自写库之常用函数:

Function

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

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

例如
  1. <script src=http://www.bathome.net/lib/Prototype.js></script>
  2. <script src=http://www.bathome.net/lib/diy/WSH.js></script>
  3. <script src=http://www.bathome.net/lib/diy/Function.js></script>
  4. <script>
  5. download('http://bbs.bathome.net/index.php')
  6. //下载批处理之家的首页
  7. alert(getopts('命令行 "切分 测试"'))
  8. //按 windows 下的规则切分命令行参数
  9. close()
  10. </script>
复制代码
示例脚本:[attach]8476[/attach]

GetRequest

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

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

例如
  1. <script src=http://www.bathome.net/lib/diy/GetRequest.js></script>
  2. <script>
  3. var values = GetRequest()
  4. //获取URL中的变量,保存在对象中
  5. alert(values['批处理之家'])
  6. alert(values['楼主'])
  7. //显示URL中指定对象的变量值
  8. close()
  9. </script>
复制代码
示例脚本:[attach]8433[/attach]

ch2num

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

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

例如
  1. <script src=http://www.bathome.net/lib/diy/ch2num.js></script>
  2. <script>
  3. alert(ch2num('中文数字壹佰叁拾贰万肆仟贰佰壹拾叁圆肆角贰分'))
  4. //大写数字转小写
  5. alert(num2chs('阿拉伯数字1324213.42'))
  6. //小写数字转大写
  7. close()
  8. </script>
复制代码
示例脚本:[attach]8475[/attach]

作者: yu2n    时间: 2015-3-5 09:28

严重支持。

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

抛弃了IE6?

来个客户端IP显示功能吧。
作者: CrLf    时间: 2015-3-5 12:24

回复 16# yu2n


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

回复 17# CrLf

Windows Server 2003 的 IE6 测试 HTA 有问题。
可能是安全性方面的原因吧。
作者: CrLf    时间: 2015-3-5 17:53

回复 18# yu2n


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

回复 16# yu2n


    搜了一下,发现已经有很多类似接口,有的甚至能直接返回 js 代码,就不搞了
    不过都是 ip 相关的,没找到干净返回时间的接口
    url 已更新到2楼
作者: 依山居    时间: 2015-10-16 00:02

回复 20# CrLf


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

http://my.oschina.net/ysj/blog/511724
  1. #满足了一下自己的搜集癖,搜集了不少可以用来查询外网IP的网址和方法。
  2. #国内某网站的接口,只返回IP
  3. curl ip.6655.com/ip.aspx
  4. curl whatismyip.akamai.com
  5. #更多用法访问ifconfig.co
  6. wget -qO - ifconfig.co
  7. curl icanhazip.com
  8. dig +short myip.opendns.com @resolver1.opendns.com
  9. curl ident.me
  10. curl v4.ident.me
  11. curl v6.ident.me
  12. #慢
  13. curl curlmyip.com
  14. curl ifconfig.me
  15. curl inet-ip.info
  16. #返回IP和地区
  17. curl ip.6655.com/ip.aspx?area=1
  18. curl ip.cn
  19. curl cip.cc
  20. curl ipip.net
  21. #需要翻x墙,只返回IP
  22. curl ip.appspot.com
  23. #参考 http://unix.stackexchange.com/questions/22615/how-can-i-get-my-external-ip-address-in-bash
  24. #有人给了以下测试方法
  25. wget https://raw.githubusercontent.com/rsp/scripts/master/externalip-benchmark
  26. chmod a+x externalip-benchmark
  27. ./externalip-benchmark
  28. #返回JSON格式的数据
  29. C:\>curl httpbin.org/get
  30. {
  31.   "args": {},
  32.   "headers": {
  33.     "Accept": "*/*",
  34.     "Host": "httpbin.org",
  35.     "User-Agent": "curl/7.28.1"
  36.   },
  37.   "origin": "222.216.164.78",
  38.   "url": "http://httpbin.org/get"
  39. }
  40. C:\>curl httpbin.org/ip
  41. {
  42.   "origin": "116.11.199.77"
  43. }
复制代码

作者: CrLf    时间: 2015-10-16 00:05

回复 21# 依山居


    nice,不过其实之前有上传一个 ip.php 到咱网站:http://www.bathome.net/s/ip.php
作者: CrLf    时间: 2015-11-21 16:50

回头发一个更劲爆的玩意,还是这个系列,改进一下
作者: CrLf    时间: 2015-11-24 17:59

折腾数日,大功告成
等 Batcher 伤愈,哥来发一个牛逼哄哄的新玩具
作者: kaze    时间: 2020-6-5 16:52

vbs  diy        在 js 中模拟使用 vbs 代码        http://www.bathome.net/lib/diy/vbs.js;第一句重要代码var sc = new ActiveXObject('MSScriptControl.ScriptControl');win64位直接出错,搜也搜不到好的解决方法。
作者: 老刘1号    时间: 2021-7-31 19:09

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




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2