标题: JSConsole v2.0.1 JScript控制台 [打印本页]
作者: CrLf 时间: 2014-7-8 03:29 标题: JSConsole v2.0.1 JScript控制台
本帖最后由 CrLf 于 2015-11-14 04:56 编辑
使用 ScriptCryptor 编译,这是我见过最牛的 vbs/js 编译工具了,执行时不需要释放脚本,连 WSH.Name 都是 ScriptCryptor
ScriptCryptor 编译的 js 不但不会提升运行效率,反而会降低启动速度,但有两个好处,一个是可以扔到 system32 文件夹下进行全局调用,另一个好处是可以不用敲一大串的 cscript //nologo js.js
不用 jsc.exe 编译是因为那样就不支持 WScript 对象了...
不想用 exe 的话,也可以直接使用 js.js,效果几乎是一样的
下载地址
【友情提示:压缩包中的文件都已 Unicode 化,但 ScriptCryptor 不支持 Unicode 脚本,所以如果您想自行编译的话,需要先将 JSConsole.js 保存为 ansi 编码】
部分特色功能举例(这些例子来自旧版本,未包含的新增部分见压缩包中的 txt):- help($fso)
- //可查看 new ActiveXObject('Scripting.FileSystemObject') 组件有哪些属性和方法
- //help($fso,true,true) 可以查看各自的类型和说明
- //help() 等于 help(this)
-
- listcom()
- //列举本机有哪些可使用的 com 组件
-
- echo($fso)
- echo([1,2,3])
- echo({a:1,b:2})
- //增强 echo 的功能:
- //对 com 组件显示其名称
- //对数组罗列其元素
- //对对象用 JSON 格式显示(需启用 Prototype 库)
- //对字符串显示原始内容
-
- vbs('a=12\\2','msgbox "12\\2=" & a','a+1')
- //调用 vbs
- //先执行 a=12\2
- //再执行 msgbox "12\2=" & a
- //最后返回 a+1 的值
-
- typename(variable)
- //查看 variable 的类型
- //比 typeof 更靠谱,能判断 Array 与自定义类型
-
- $In=open('test.js')
- //引用 test.js 的内容作为输入,执行效果和手动输入等价
- //$Out 和 $Err 也可以重定向
-
- Object.toJSON({test:123})
- //来自 Prototype 库的方法,将变量输出为 JSON 格式
-
- help().grep(/^\$/).sort()
- //用 help() 获取 this 对象的所有方法和属性,其输出为数组
- //再用 grep(/^\$/) 筛选数组中以 $ 开头的内容(grep 方法由 Prototype 提供)
- //最后用 sort() 将结果排序
- //list 和 dir 等函数的输出也是数组,可以使用 Array 的方法和属性
复制代码
更多说明见 2 楼
-------------------------------------------------------------------------------------------
目前还有几个已知可改进的地方,比如对启动参数、脚本的支持,还有未实现的 setclip 函数,但这些不是重点
这玩意原来只是打算用来测试 JScript 的,眼红 chrome 的 javascript console 很久了,索性自己实现一个
其实基本功能不到二十行就能搞定,写着写着功能越加越多了...
水平问题,写不出很强大的东西,先凑合着用吧
-------------------------------------------------------------------------------------------
1.1
加入 /NoLogo /-Prototype /-Function 选项用于阻止加载 Prototype 库或自定义函数(但 echo 函数依然会加载)
修改对 help(Object) 与 list(Object) 的处理逻辑
-------------------------------------------------------------------------------------------
2.0
重组了大部分代码
在保证功能的前提下,尽可能细化了主文件的功能,把模块尽可能拆出去
大幅增强 help 函数的功能,对组件不再挑三拣四,对函数则有单独的相应逻辑
以数组为基础,着重扩展数组的方法和强调回调函数的使用
增加可定制的宏命令和预处理命令
用 AutoHotKey 制作了辅助工具,顺便推广推广 AHK~
增加了很多的库和自定义方法、函数,这个看体积就知道了
现在能够备份还原 RegExp 的属性值,不会被语法解析时使用的正则影响
修正几个已知bug
-------------------------------------------------------------------------------------------
2.0.1
添加少量 js 库
js.exe 更名为 JSConsole.exe,避免与来自火狐的 JSShell 项目重名
-------------------------------------------------------------------------------------------
附,Node.js 也不错,可惜毕竟不是 JScript:Node.js 独立的 Javascript 解释平台
作者: CrLf 时间: 2014-7-8 03:31
本帖最后由 CrLf 于 2015-11-14 04:52 编辑
特色功能简介.txt:- 【宏命令、预处理命令】
-
- Array.isP{按两个Tab再按回车}
- //自动语法补全,不同数量的Tab有不同的含义,由 $Host.Tab_* 系列变量控制其行为
- //默认设置下开关全开,会尽量把所有可能列出
- //一个回车代表只显示补全,两个回车代表提供序号选项,三~五个回车表示快速选定第一~三个匹配项
-
-
- {按下Ctrl+R}notepad.exe
- //默认启用针对控制字符的预处理,可以将 ^R... 理解为 run(...)
- //再比如 '{Ctrl+^}{Ctrl+[}c:\windows\system32{Ctrl+]}' 可以将 ^[ 到 ^] 之间的 \ 转义为普通字符
- //再比如 '{Ctrl+L}{Ctrl+[}ABCDE{Ctrl+]}' 可以将 ^[ 到 ^] 之间的字母转为小写
-
-
- baidu 你好
- //按照预设的条件触发宏函数
- //可以在 $Host.Map_macros 中自行定义
-
-
-
-
- 【大量的自定义函数、扩展方法、回调函数】
-
- help($ws)
- //能获取各类对象的帮助信息,对于组件需要 tli 组件支持
-
-
- help(123).sort().grep(/^to/)
- //大多数函数或方法的输出结果是数组,而数组的方法又得到了大量的增强(依赖 Prototype_MOD.js 与 DIYprototype.js)
-
-
- dir('c:\\')._EACH(callBack.F_info()).select('Path')
- //另一个特色是回调函数的应用,只关心名称,不关心具体对象(见《部分内置变量简介.txt》的【callBack】部分),与 each 方法是绝配
-
-
-
-
-
- 【语句完整性检查】
-
- 能较快地排除字符串、正则表达式、语句块,判断符号是否闭合、语句是否完整,有一定准确度
-
-
-
-
-
- 【模拟事件相应、高仿设备和对象】
-
- 能够用函数来“响应”某些事件
- 虚拟了 $Nul、$Buffer 设备
- $Arg 完全兼容 WScript.Arguments 的语法
-
-
-
-
-
- 【高自由度的控制台方案】
-
- 主体完全由 Jscript 自身功能实现,且模块分明,可以根据需要自行改造
-
-
-
-
-
- 【集成大量的可选库】
-
- 集成了 Prototype 库中的语法增强部分(阉割了依赖浏览器的代码),还有 Sugar.js、lazy.js、taffy.js 等强大的第三方库
- 搜集整理了 JsFormat.js、sprintf.js 这类较零散的库
- DIY了 iconv.js、list.js、callBack.js 库
- 并有 phpjs-function、simplehtmlparser.js 等库作为备用
复制代码
---------------------------------------------------------------------------------------------------
部分内置变量简介.txt:- 【$Host】
-
- 这是最重要的变量,包含各类的关键词列表、文件列表、开关变量、响应某些“事件”的函数。
-
- 其中带前缀的变量含义是:
- Event_ “事件”响应函数 Map_ 保存关键信息的列表
- Func_ 主要代码所需调用的函数 Tab_ 自动完成的各种设置开关
-
- 其他零散变量的作用是:
- $Arg 是 this.$Arg 的备份 $History 历史输入
- $Buffer 模拟缓冲区,可当文件用 $Nul 模拟的空设备,丢弃任何输入,返回空值
- Configure 配置文件的路径 AutoScript 自动预先调用的脚本路径
- dontShow 控制是否不输出最后返回值
-
-
-
-
- 【$Arg】
-
- 重要变量,按自定义的标准重新切分 WScript.Arguments 中的参数,但仍支持 WScript.Arguments 的所有方法和属性
- Option 控制台的参数 Command 传递给脚本的参数
- Named 命名参数 Unnamed 未命名参数
-
-
-
-
- 【$In / $Out / $Err】
-
- 重要变量,分别对应输入、输出和错误输出。
- 绝大部分输入输出都基于这三个变量,你可以轻易将输出或错误输出重定向到 $Nul 或文件
-
-
-
-
- 【$$ / $_】
-
- $$ 为该循环所要执行的代码,$_ 为执行的最后结果,如果 $Host.dontShow 不为真,则执行完后默认输出 $_
-
-
-
-
- 【$tmp / $temp】
-
- $tmp 和 $temp 是临时变量,每次循环时自动清空
-
-
-
-
- 【其余以 $ 开头的变量】
-
- 如 $fso、$ws 等,是已创建的 com 组件的缩写
-
-
-
- 【callBack】
-
- 回调函数的根节点,本身是个将参数原样返回的回调函数
- 不关心具体对象,而只关心调用的是什么函数、方法或属性,也就是说可以在对象不明确的情况下引用它的方法
- 与 each、_each、EACH、_EACH 方法非常般配
- 其下函数的前缀含义是:
- M_ 对象的继承方法 P_ 对象的继承属性
- F_ this的函数
-
- 值得一提的是,Function.prototype 继承链中,有部分方法返回的也是回调函数,此类方法的前缀是 __
-
-
-
- 【ObjectRange / Hash】
-
- 来自 Prototype_MOD.js 的对象
-
-
- 【_】
-
- 来自 lodash.compat.js 的强大对象
-
-
- ......
复制代码
---------------------------------------------------------------------------------------------------
辅助工具简介.txt:- 【AutoHotkey.exe】
-
- autohotkey 脚本宿主,JSconsole.ahk 和 sendInput.ahk 都要用它运行
-
-
-
-
- 【JSconsole.ahk】
-
- 利用 ahk 能实现无须回车的宏替换和自动补全
- ScrollLock 可随时启用或禁用该脚本中的宏替换和针对 { [ " 等符号的成对补全
- 启用该脚本后:
- 单个 Tab 键显示无选项的自动补全
- Ctrl+Tab 显示带选项的自动补全
- Ctrl+. 罗列对象的方法和属性
-
-
-
-
- 【sendInput.ahk】
-
- 比较靠谱而简单的发送按键方案
- 如果找不到此脚本,将用 com 组件的 SendKeys 方法代替
-
-
-
-
- 【TLBINF32.DLL】
-
- Tli 组件依赖的 Dll,使用前需注册(需要管理员权限)
- 64 位环境中不能正常使用,所以如果要使用此组件的功能,64 位系统上使用 C:\Windows\SysWOW64\cscript.exe 来运行 js.js
- 但可能因此无法正常读取某些 64 位组件的返回值
复制代码
---------------------------------------------------------------------------------------------------
文件与文件夹简介.txt:- -------------------------------------------------------------------------------------
-
- JSConsole.js 原版主文件,可编辑
-
- JSConsole.exe exe 版主文件(32位),不可编辑
-
- JSConsole.cmd 批处理调用主文件,以保持在 cmd 窗口下
-
- configure.json 配置信息,保存了各种设置、加载库列表、自动运行脚本路径等信息
-
- JSConsole.Auto.js 自动运行脚本,默认在运行命令前自动调用,以便预先执行一些命令
-
- -------------------------------------------------------------------------------------
-
- Base 文件夹为关键脚本,许多自写函数基于此文件夹的库
- 禁用后不影响使用 JScriptConsole,但会使部分自写函数失效
-
- $Host $Host 文件夹中的脚本用于增强 $Host 对象的方法,用于实现宏替换等功能,禁用后将影响体验
-
- Script 文件夹中的脚本是 JS 增强库,
- 部分库有官网维护,脚本头部有注明示例和官网链接
-
- Script\diy Script 文件夹中的脚本为自写函数和方法
-
- Tools 文件夹放置一些辅助工具
复制代码
作者: storm8 时间: 2014-7-8 09:10
node.js
谁用谁知道
作者: CrLf 时间: 2014-7-8 15:43
回复 3# storm8
Node.js 木有 WSH 对象吧...
作者: zhanglei1371 时间: 2014-7-8 16:16
感谢分享,太强大了!
作者: storm8 时间: 2014-7-8 18:55
回复 4# CrLf
WSH的功能用node.js很多都能实现啊..
作者: CrLf 时间: 2014-7-8 19:33
回复 6# storm8
噢,没接触过,回头试试~
作者: yu2n 时间: 2014-11-16 18:00
不错,语法上比我好。
提点建议:
兼容繁体系统显示。文本文件(.txt)文件以UTF-8编码保存,JS脚本(.js)文件以ULE(Unicode)编码保存。这对于用繁体系统(BIG5内码页)的同胞来说相当重要。
作者: CrLf 时间: 2014-11-16 18:09
回复 8# yu2n
“JS脚本(.js)文件以ULE(Unicode)编码保存”
这个建议不错,收下了,回头重新打包一下
作者: CrLf 时间: 2015-1-1 20:52
回复 8# yu2n
2.0 版已完成 Unicode 化(除了 js.exe 还是用 ansi 编码打包 )
历时一个月多,赶脚脱胎换骨
终于把想做的事都做完了,呼~
作者: yu2n 时间: 2015-1-1 21:04
回复 10# CrLf
恭喜恭喜,新年快乐!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |