[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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):
  1. help($fso)
  2. //可查看 new ActiveXObject('Scripting.FileSystemObject') 组件有哪些属性和方法
  3. //help($fso,true,true) 可以查看各自的类型和说明
  4. //help() 等于 help(this)
  5. listcom()
  6. //列举本机有哪些可使用的 com 组件
  7. echo($fso)
  8. echo([1,2,3])
  9. echo({a:1,b:2})
  10. //增强 echo 的功能:
  11. //对 com 组件显示其名称
  12. //对数组罗列其元素
  13. //对对象用 JSON 格式显示(需启用 Prototype 库)
  14. //对字符串显示原始内容
  15. vbs('a=12\\2','msgbox "12\\2=" & a','a+1')
  16. //调用 vbs
  17. //先执行 a=12\2
  18. //再执行 msgbox "12\2=" & a
  19. //最后返回 a+1 的值
  20. typename(variable)
  21. //查看 variable 的类型
  22. //比 typeof 更靠谱,能判断 Array 与自定义类型
  23. $In=open('test.js')
  24. //引用 test.js 的内容作为输入,执行效果和手动输入等价
  25. //$Out 和 $Err 也可以重定向
  26. Object.toJSON({test:123})
  27. //来自 Prototype 库的方法,将变量输出为 JSON 格式
  28. help().grep(/^\$/).sort()
  29. //用 help() 获取 this 对象的所有方法和属性,其输出为数组
  30. //再用 grep(/^\$/) 筛选数组中以 $ 开头的内容(grep 方法由 Prototype 提供)
  31. //最后用 sort() 将结果排序
  32. //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 于 2015-11-14 04:52 编辑

特色功能简介.txt:
  1. 【宏命令、预处理命令】
  2. Array.isP{按两个Tab再按回车}
  3. //自动语法补全,不同数量的Tab有不同的含义,由 $Host.Tab_* 系列变量控制其行为
  4. //默认设置下开关全开,会尽量把所有可能列出
  5. //一个回车代表只显示补全,两个回车代表提供序号选项,三~五个回车表示快速选定第一~三个匹配项
  6. {按下Ctrl+R}notepad.exe
  7. //默认启用针对控制字符的预处理,可以将 ^R... 理解为 run(...)
  8. //再比如 '{Ctrl+^}{Ctrl+[}c:\windows\system32{Ctrl+]}' 可以将 ^[ 到 ^] 之间的 \ 转义为普通字符
  9. //再比如 '{Ctrl+L}{Ctrl+[}ABCDE{Ctrl+]}' 可以将 ^[ 到 ^] 之间的字母转为小写
  10. baidu 你好
  11. //按照预设的条件触发宏函数
  12. //可以在 $Host.Map_macros 中自行定义
  13. 【大量的自定义函数、扩展方法、回调函数】
  14. help($ws)
  15. //能获取各类对象的帮助信息,对于组件需要 tli 组件支持
  16. help(123).sort().grep(/^to/)
  17. //大多数函数或方法的输出结果是数组,而数组的方法又得到了大量的增强(依赖 Prototype_MOD.js 与 DIYprototype.js)
  18. dir('c:\\')._EACH(callBack.F_info()).select('Path')
  19. //另一个特色是回调函数的应用,只关心名称,不关心具体对象(见《部分内置变量简介.txt》的【callBack】部分),与 each 方法是绝配
  20. 【语句完整性检查】
  21. 能较快地排除字符串、正则表达式、语句块,判断符号是否闭合、语句是否完整,有一定准确度
  22. 【模拟事件相应、高仿设备和对象】
  23. 能够用函数来“响应”某些事件
  24. 虚拟了 $Nul、$Buffer 设备
  25. $Arg 完全兼容 WScript.Arguments 的语法
  26. 【高自由度的控制台方案】
  27. 主体完全由 Jscript 自身功能实现,且模块分明,可以根据需要自行改造
  28. 【集成大量的可选库】
  29. 集成了 Prototype 库中的语法增强部分(阉割了依赖浏览器的代码),还有 Sugar.js、lazy.js、taffy.js 等强大的第三方库
  30. 搜集整理了 JsFormat.js、sprintf.js 这类较零散的库
  31. DIY了 iconv.js、list.js、callBack.js 库
  32. 并有 phpjs-function、simplehtmlparser.js 等库作为备用
复制代码
---------------------------------------------------------------------------------------------------
部分内置变量简介.txt:
  1. 【$Host】
  2. 这是最重要的变量,包含各类的关键词列表、文件列表、开关变量、响应某些“事件”的函数。
  3. 其中带前缀的变量含义是:
  4. Event_ “事件”响应函数 Map_ 保存关键信息的列表
  5. Func_ 主要代码所需调用的函数 Tab_ 自动完成的各种设置开关
  6. 其他零散变量的作用是:
  7. $Arg 是 this.$Arg 的备份 $History 历史输入
  8. $Buffer 模拟缓冲区,可当文件用 $Nul 模拟的空设备,丢弃任何输入,返回空值
  9. Configure 配置文件的路径 AutoScript 自动预先调用的脚本路径
  10. dontShow 控制是否不输出最后返回值
  11. 【$Arg】
  12. 重要变量,按自定义的标准重新切分 WScript.Arguments 中的参数,但仍支持 WScript.Arguments 的所有方法和属性
  13. Option 控制台的参数 Command 传递给脚本的参数
  14. Named 命名参数 Unnamed 未命名参数
  15. 【$In / $Out / $Err】
  16. 重要变量,分别对应输入、输出和错误输出。
  17. 绝大部分输入输出都基于这三个变量,你可以轻易将输出或错误输出重定向到 $Nul 或文件
  18. 【$$ / $_】
  19. $$ 为该循环所要执行的代码,$_ 为执行的最后结果,如果 $Host.dontShow 不为真,则执行完后默认输出 $_
  20. 【$tmp / $temp】
  21. $tmp 和 $temp 是临时变量,每次循环时自动清空
  22. 【其余以 $ 开头的变量】
  23. 如 $fso、$ws 等,是已创建的 com 组件的缩写
  24. 【callBack】
  25. 回调函数的根节点,本身是个将参数原样返回的回调函数
  26. 不关心具体对象,而只关心调用的是什么函数、方法或属性,也就是说可以在对象不明确的情况下引用它的方法
  27. 与 each、_each、EACH、_EACH 方法非常般配
  28. 其下函数的前缀含义是:
  29. M_ 对象的继承方法 P_ 对象的继承属性
  30. F_ this的函数
  31. 值得一提的是,Function.prototype 继承链中,有部分方法返回的也是回调函数,此类方法的前缀是 __
  32. 【ObjectRange / Hash】
  33. 来自 Prototype_MOD.js 的对象
  34. 【_】
  35. 来自 lodash.compat.js 的强大对象
  36. ......
复制代码
---------------------------------------------------------------------------------------------------
辅助工具简介.txt:
  1. 【AutoHotkey.exe】
  2. autohotkey 脚本宿主,JSconsole.ahk 和 sendInput.ahk 都要用它运行
  3. 【JSconsole.ahk】
  4. 利用 ahk 能实现无须回车的宏替换和自动补全
  5. ScrollLock 可随时启用或禁用该脚本中的宏替换和针对 { [ " 等符号的成对补全
  6. 启用该脚本后:
  7. 单个 Tab 键显示无选项的自动补全
  8. Ctrl+Tab 显示带选项的自动补全
  9. Ctrl+. 罗列对象的方法和属性
  10. 【sendInput.ahk】
  11. 比较靠谱而简单的发送按键方案
  12. 如果找不到此脚本,将用 com 组件的 SendKeys 方法代替
  13. 【TLBINF32.DLL】
  14. Tli 组件依赖的 Dll,使用前需注册(需要管理员权限)
  15. 64 位环境中不能正常使用,所以如果要使用此组件的功能,64 位系统上使用 C:\Windows\SysWOW64\cscript.exe 来运行 js.js
  16. 但可能因此无法正常读取某些 64 位组件的返回值
复制代码
---------------------------------------------------------------------------------------------------
文件与文件夹简介.txt:
  1. -------------------------------------------------------------------------------------
  2. JSConsole.js 原版主文件,可编辑
  3. JSConsole.exe exe 版主文件(32位),不可编辑
  4. JSConsole.cmd 批处理调用主文件,以保持在 cmd 窗口下
  5. configure.json 配置信息,保存了各种设置、加载库列表、自动运行脚本路径等信息
  6. JSConsole.Auto.js 自动运行脚本,默认在运行命令前自动调用,以便预先执行一些命令
  7. -------------------------------------------------------------------------------------
  8. Base 文件夹为关键脚本,许多自写函数基于此文件夹的库
  9. 禁用后不影响使用 JScriptConsole,但会使部分自写函数失效
  10. $Host $Host 文件夹中的脚本用于增强 $Host 对象的方法,用于实现宏替换等功能,禁用后将影响体验
  11. Script 文件夹中的脚本是 JS 增强库,
  12. 部分库有官网维护,脚本头部有注明示例和官网链接
  13. Script\diy Script 文件夹中的脚本为自写函数和方法
  14. Tools 文件夹放置一些辅助工具
复制代码

TOP

node.js
谁用谁知道

TOP

回复 3# storm8


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

TOP

感谢分享,太强大了!

TOP

回复 4# CrLf


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

TOP

回复 6# storm8


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

TOP

不错,语法上比我好。

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

TOP

回复 8# yu2n


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

TOP

回复 8# yu2n


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

TOP

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

TOP

返回列表