windows下通过命令行运行javascript脚本,支持命令行参数

js作为最受欢迎的语言,以其方便、通用、功能强大的特点,可以给大家在实际使用的过程中带来很大的便利。

下面是本文从实际应用的角度理解的js好处:

  1. js的正则表达式处理
  2. 易理解、弱类型的语法特性
  3. 使用浏览器就可以方便调试
  4. 与网页深度结合,在处理和展示有巨大优势

支持命令行运行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脚本,支持命令行参数相关推荐

  1. node 使用命令行运行esm脚本

    原文链接: node 使用命令行运行esm脚本 上一篇: fp-ts 简单瞅瞅 下一篇: js 简单卡通滤镜 https://www.npmjs.com/package/esm 主要是在scripts ...

  2. 昊鼎王五:Windows运行中的所有命令_Windows快捷命令_运行中的所有命令

    昊鼎王五:Windows运行中的所有命令_Windows快捷命令_"运行"中的所有命令 winver 检查Windows版本 wmimgmt.msc 打开Windows管理体系结构 ...

  3. flume 1.7在windows下的安装与运行

    flume 1.7在windows下的安装与运行 一.安装 安装java,配置环境变量. 安装flume,flume的官网http://flume.apache.org/,下载地址,下载后直接解压即可 ...

  4. python路径在哪里设置_找Python安装目录,设置环境路径以及在命令行运行python脚本实例...

    第一点:找Python安装目录 方法一: 方法二: 输入import sys print(sys.path) 化黑线处 第二点:找到安装目录后就可以开始设置环境变量 这里我的安装目录为C:\Progr ...

  5. python-找Python安装目录,设置环境路径以及在命令行运行python脚本

    第一点:找Python安装目录 方法一: 方法二: 输入import sys print(sys.path) 化黑线处 第二点:找到安装目录后就可以开始设置环境变量 这里我的安装目录为C:\Progr ...

  6. Windows下Latex的系统路径增添,使用命令编译

    Windows下Latex的系统路径增添,使用命令编译 1.修改Windows系统环境路径 2.使用命令行工具编译.tex文件 1.修改Windows系统环境路径 本人Windows系统中安装了Mik ...

  7. 干货-运行Python脚本的命令行操作(2)

    本文用到的数据,可以加QQ跟群主获取: 群名称:PYTHONERS-数据 群   号:663468799 学习python和数据分析推荐地方: www.lynda.com   获取lynda官网会员的 ...

  8. windows下java -jar 后台运行以及杀死后台进程的操作

    这篇文章主要介绍了windows下java -jar 后台运行以及杀死后台进程的操作,具有很好的参考价值,希望对大家有所帮助. 在你的jar文件当前目录中建立一个bat文件: 内容是:注意文件名要对应 ...

  9. Windows下nginx的启动,重启,停止命令

    Windows下nginx的启动,重启,停止命令 打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可(启动nginx) nginx -s ...

最新文章

  1. MySQL-锁表处理
  2. CFile、CStdioFile、FILE和其他文件操作(转)
  3. 状态模式(State Pattern)
  4. PyTorch 1.7 发布:支持 CUDA 11、FFT 新 API、及 Windows 分布式训练
  5. 24. Spring Boot 事务的使用
  6. 在Unity中为模型使用表情
  7. Cordova+Vue实现Android APP开发
  8. Android adb shell命令详解及实例
  9. STM32单片机介绍2
  10. 了解一下PMO项目管理岗
  11. 给Matlab添加工具箱Toolbox的方法(有截图详细讲解)(R2019b)
  12. 【转载】Python Numpy求余弦值和欧几里得距离
  13. 前端小程序,h5,浏览器,app, doc,.docx,.ofd,.PDF,.WPS以及Office文档的在线解析预览方式
  14. 不等距双杆模型_电磁感应之双杆模型ppt课件
  15. Java 鸡翁一值钱五Java_Java案例5:斐波那契数列,百钱百鸡
  16. 换发型算法_【AI超级美发师】深度学习算法打造染发特效(附代码)
  17. xinetd 服务
  18. 性能功能LocustJmeter LoadRunner优缺点
  19. 新概念2 课文和单词(1)
  20. 软件质量管理-1-课程介绍

热门文章

  1. python名词,单词和名词相似性Python NLTK
  2. Hadoop基础教程-第10章 HBase:Hadoop数据库(10.1 NoSQL介绍)(草稿)
  3. https://www.cnblogs.com/lyhabc/archive/2013/06/12/3133273.html?tdsourcetag=s_pcqq_aiomsg
  4. 关于WSADuplicateSocket的理解
  5. 电脑硬盘坏了里面的东西能恢复吗?2个恢复方式任选
  6. 选择测径仪 13点注意事项
  7. 新年快乐动态PPT模板免费分享
  8. T2080RDB-PC uboot 引导 Linux 内核启动
  9. 国内航班最快明年可实现上网打电话
  10. 数学建模竞赛论文撰写技巧