返回列表 发帖

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 的方法和属性COPY
更多说明见 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 解释平台

回复 10# CrLf
恭喜恭喜,新年快乐!
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 8# yu2n


    2.0 版已完成 Unicode 化(除了 js.exe 还是用 ansi 编码打包 )
    历时一个月多,赶脚脱胎换骨
    终于把想做的事都做完了,呼~

TOP

回复 8# yu2n


    “JS脚本(.js)文件以ULE(Unicode)编码保存”
这个建议不错,收下了,回头重新打包一下

TOP

不错,语法上比我好。

提点建议:
兼容繁体系统显示。文本文件(.txt)文件以UTF-8编码保存,JS脚本(.js)文件以ULE(Unicode)编码保存。这对于用繁体系统(BIG5内码页)的同胞来说相当重要。
『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

回复 6# storm8


    噢,没接触过,回头试试~

TOP

回复 4# CrLf


    WSH的功能用node.js很多都能实现啊..

TOP

感谢分享,太强大了!

TOP

回复 3# storm8


    Node.js 木有 WSH 对象吧...

TOP

node.js
谁用谁知道

TOP

本帖最后由 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-functionsimplehtmlparser.js 等库作为备用COPY
---------------------------------------------------------------------------------------------------
部分内置变量简介.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 的强大对象
......COPY
---------------------------------------------------------------------------------------------------
辅助工具简介.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 位组件的返回值COPY
---------------------------------------------------------------------------------------------------
文件与文件夹简介.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 文件夹放置一些辅助工具COPY

TOP

返回列表