[js]windows下通过命令行运行javascript脚本,支持命令行参数
windows下通过命令行运行javascript脚本,支持命令行参数
js作为最受欢迎的语言,以其方便、通用、功能强大的特点,可以给大家在实际使用的过程中带来很大的便利。
下面是本文从实际应用的角度理解的js好处:
- js的正则表达式处理
- 易理解、弱类型的语法特性
- 使用浏览器就可以方便调试
- 与网页深度结合,在处理和展示有巨大优势
支持命令行运行js脚本,在实际中能起到很多意想不到的效果。下面介绍通过命令行运行javascript脚本的内容。
原理
通过nodejs运行js脚本。
核心函数
为了保证文件用其他方式也能使用,可以先判断是否是通过nodejs运行。如果不是,直接跳过。
function node_main(){// 如果不是通过node执行,直接返回if("undefined" == typeof process){return;}var s = convert(exampleIn, 'fname');console.log(s);
}node_main()
运行js脚本
你现在已经可以用js写你的功能,然后在命令行下执行了。
读写文件
处理文本,不支持读写文件,那是不完整的。
nodejs运行javascript可以通过require('fs')
库进行文件的读写。fs
库是nodejs自带的系统库,不需要另外安装。
读取文件
var fs = require('fs');
if(!fs.existsSync(tmpFname)){return "";
}var str = fs.readFileSync(tmpFname, null);
return str.toString();
写入文件
var fs = require('fs');
var s = "content to write";
fs.writeFileSync(tmpFname, s);
读取命令行参数
通过变量process.argv
读取。第0个是node,第1个是脚本名,第2个开始是要使用的参数
for(var i=2;i<process.argv.length;i++){var fname = process.argv[i];console.log('arg: ' + fname);
}
完整的示例代码
ProtoIndex.js
/*** Proto自动生成编号**/var name = "ProtoIndex";
var des = "Proto自动生成编号";
var exampleIn = ""
+ "message msg {\n"
+ " repeated string result = 1;\n"
+ " repeated string a = 1;\n"
+ "\n"
+ " // 这里是注释\n"
+ " string b = 1;\n"
+ " \n"
+ " // repeated string d = 1; // 注释里的注释\n"
+ "\n"
+ " repeated uint32 c = 1;\n"
+ "}\n";function convert(input) {var res =indexProto(input);return res;
}/************************************************************ proto定义自动编号*/
function testProtoIndex(s) {return /^[\s]*\w+(\s+[\w.]+)*\s*=\s*([\d]+)/.test(s);
}function testProtoMessageStart(s) {return /^\s*message\s*/.test(s);
}function replaceProtoIndex(s, index) {return s.replace(/\s*=\s*([\d]+)/, function (str, key) {return " = " + index;});
}function indexProto(content) {var resContent = "";var s = content;var count = 1;var sList;if (Array.isArray(content)) {sList = content;} else {sList = s.split("\n");}var rItems = [];for (var i = 0; i < sList.length; i++) {var kw = sList[i];if (!kw) {rItems.push("");continue;}if (testProtoIndex(kw)) {kw = replaceProtoIndex(kw, count);count++;} else if (testProtoMessageStart(kw)) {count = 1;}rItems.push(kw);}resContent = rItems.join("\n")return resContent;
}/** 公共函数*/// 复制对象
function extend(to, from) {var keys = Object.keys(from);var i = keys.length;while (i--) {to[keys[i]] = from[keys[i]];}return to;
}function nano(template, data) {return template.replace(/\{\{([\w\.]*)\}\}/g, function (str, key) {var keys = key.split("."),v = data[keys.shift()];for (var i = 0, l = keys.length; i < l; i++) v = v[keys[i]];return (typeof v !== "undefined" && v !== null) ? v : "";});
}node_main();function node_main(){// 如果不是通过node执行,直接返回if("undefined" == typeof process){return;}if(process.argv.length <= 2){var s = convert(exampleIn, 'no-file-name');console.log(s);return;}for(var i=2;i<process.argv.length;i++){var tmpFname = process.argv[i];console.log(tmpFname);var fs = require('fs');if(!fs.existsSync(tmpFname)){console.log("file not exists");continue;}var str = fs.readFileSync(tmpFname, null);var s = convert(str.toString());console.log(s);}
}
[js]windows下通过命令行运行javascript脚本,支持命令行参数相关推荐
- node 使用命令行运行esm脚本
原文链接: node 使用命令行运行esm脚本 上一篇: fp-ts 简单瞅瞅 下一篇: js 简单卡通滤镜 https://www.npmjs.com/package/esm 主要是在scripts ...
- 昊鼎王五:Windows运行中的所有命令_Windows快捷命令_运行中的所有命令
昊鼎王五:Windows运行中的所有命令_Windows快捷命令_"运行"中的所有命令 winver 检查Windows版本 wmimgmt.msc 打开Windows管理体系结构 ...
- flume 1.7在windows下的安装与运行
flume 1.7在windows下的安装与运行 一.安装 安装java,配置环境变量. 安装flume,flume的官网http://flume.apache.org/,下载地址,下载后直接解压即可 ...
- python路径在哪里设置_找Python安装目录,设置环境路径以及在命令行运行python脚本实例...
第一点:找Python安装目录 方法一: 方法二: 输入import sys print(sys.path) 化黑线处 第二点:找到安装目录后就可以开始设置环境变量 这里我的安装目录为C:\Progr ...
- python-找Python安装目录,设置环境路径以及在命令行运行python脚本
第一点:找Python安装目录 方法一: 方法二: 输入import sys print(sys.path) 化黑线处 第二点:找到安装目录后就可以开始设置环境变量 这里我的安装目录为C:\Progr ...
- Windows下Latex的系统路径增添,使用命令编译
Windows下Latex的系统路径增添,使用命令编译 1.修改Windows系统环境路径 2.使用命令行工具编译.tex文件 1.修改Windows系统环境路径 本人Windows系统中安装了Mik ...
- 干货-运行Python脚本的命令行操作(2)
本文用到的数据,可以加QQ跟群主获取: 群名称:PYTHONERS-数据 群 号:663468799 学习python和数据分析推荐地方: www.lynda.com 获取lynda官网会员的 ...
- windows下java -jar 后台运行以及杀死后台进程的操作
这篇文章主要介绍了windows下java -jar 后台运行以及杀死后台进程的操作,具有很好的参考价值,希望对大家有所帮助. 在你的jar文件当前目录中建立一个bat文件: 内容是:注意文件名要对应 ...
- Windows下nginx的启动,重启,停止命令
Windows下nginx的启动,重启,停止命令 打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可(启动nginx) nginx -s ...
最新文章
- MySQL-锁表处理
- CFile、CStdioFile、FILE和其他文件操作(转)
- 状态模式(State Pattern)
- PyTorch 1.7 发布:支持 CUDA 11、FFT 新 API、及 Windows 分布式训练
- 24. Spring Boot 事务的使用
- 在Unity中为模型使用表情
- Cordova+Vue实现Android APP开发
- Android adb shell命令详解及实例
- STM32单片机介绍2
- 了解一下PMO项目管理岗
- 给Matlab添加工具箱Toolbox的方法(有截图详细讲解)(R2019b)
- 【转载】Python Numpy求余弦值和欧几里得距离
- 前端小程序,h5,浏览器,app, doc,.docx,.ofd,.PDF,.WPS以及Office文档的在线解析预览方式
- 不等距双杆模型_电磁感应之双杆模型ppt课件
- Java 鸡翁一值钱五Java_Java案例5:斐波那契数列,百钱百鸡
- 换发型算法_【AI超级美发师】深度学习算法打造染发特效(附代码)
- xinetd 服务
- 性能功能LocustJmeter LoadRunner优缺点
- 新概念2 课文和单词(1)
- 软件质量管理-1-课程介绍
热门文章
- python名词,单词和名词相似性Python NLTK
- Hadoop基础教程-第10章 HBase:Hadoop数据库(10.1 NoSQL介绍)(草稿)
- https://www.cnblogs.com/lyhabc/archive/2013/06/12/3133273.html?tdsourcetag=s_pcqq_aiomsg
- 关于WSADuplicateSocket的理解
- 电脑硬盘坏了里面的东西能恢复吗?2个恢复方式任选
- 选择测径仪 13点注意事项
- 新年快乐动态PPT模板免费分享
- T2080RDB-PC uboot 引导 Linux 内核启动
- 国内航班最快明年可实现上网打电话
- 数学建模竞赛论文撰写技巧