node2bat 是一个可以将 NodeJS 脚本编译为 Windows 批处理脚本的工具。编译后的批处理不再依赖 NodeJS,双击可直接运行。你可以使用 NodeJS 的 API 来编写 Windows 批处理脚本发布给其他人使用,而不需要安装 NodeJS 的环境。借助 js 强大的语法支持,你的批处理将异常强大。
windows 中自带了 javascript 引擎支持 jscript,所以 node2bat 便是使用 jscript 封装了一层 nodejs 的 api,然后巧妙地将 js 包含在 bat 文件中。
先安装 NodeJS,然后执行:
npm install node2bat -g
node2bat <file>
<file>
为 node 脚本,只支持 utf-8 编码
源码 demo 目录是一个演示例子,其中 includeHTML.js 是基于 NodeJS 编写的自动化脚本,它的用途是给页面制作人员批量更新局部模板的。
这个脚本里面用到了 NodeJS 的文件与路径处理,我们可以编译 includeHTML.js 为 bat 文件,这样用户拿到我们的 bat 文件就可以直接双击运行了,无需安装 NodeJS 与学习命令行。
切换到源码目录,运行:
node2bat demo/includeHTML/includeHTML.js
运行完毕后会立刻生成独立的 includeHTML.bat,你也可以双击打开它试用一下。
node2bat 支持 NodeJS API 的核心 API,并且支持大多数 ECMA5 的 API,这些足可以满足绝大多数任务。
- __filename
- __dirname
- require(id)
(注意:仅支持 node2bat 内置的系统模块或外部 json 文件)
- process
- console
- File System
- fs.renameSync(oldPath, newPath)
- fs.statSync(path)
只支 isFile()、isDirectory()、size、atime、mtime、ctime
- fs.unlinkSync(path)
- fs.rmdirSync(path)
- fs.mkdirSync(path, [mode])
- fs.readFileSync(filename, [options])
- fs.writeFileSync(filename, data, [options])
- fs.existsSync(path)
- Path
如果拖拽文件到 bat 图标上运行,使用process.argv.slice(2)
可以获取这些文件的列表。
node2bat test/test.js
start test/test.bat
v0.0.3
- 修复
fs.writeFileSync()
写入utf-8
文件会插入 bom 的问题 - 修复
this
指向为global
对象的问题 require()
方法支持载入 json 文件fs.statSync()
支持size
、atime
、mtime
、ctime
require(id)
支持读取外部 json 文件- 完善
console
模块 - 完善
process.env
模块,完全与 NodeJS 保持一致 - 鉴于使用场景为批处理,所以取消异步方法的支持
- 提供测试用例
v0.0.2
- 修正
process.argv
的 BUG console.log
方法可以友好的显示Object
数据结构
v0.0.1
- 支持 NodeJS 文件与路径操作等基础 API
MIT