参考
《Node.js开发指南 ByVoid》Page 59
process 是一个全局变量,即 global 对象的属性。它用于描述当前 Node.js 进程状态的对象,提供了一个与操作系统的简单接口。通常在你写本地命令行程序的时候,少不了要和它打交道。下面将会介绍 process 对象的一些最常用的成员方法。
一、agrv
process.argv 这个有什么用途?
Node.js的语法是与Javascript一样吗
process.argv返回命令行脚本的各个参数组成的数组。可以获取bat里面的参数。
// print process.argv
process.argv.forEach(function(val, index, array) {
console.log(index + ': ' + val);
});
$ node process.js one two=three four
0: node
1: /Users/node/process.js
2: one
3: two=three
4: four
可以看出,会将bat命令以空格为标记,拆成一个数组。索引0是node命令,索引1是运行路径。索引2开始就是参数了。
这个用处挺多的。例如你在bat的文件这样写。node app 127.0.0.1 7001 这时候通过.argv [2] 得到IP,argv[3]得到端口,更方便我们修改配置。
再看个例子:
/**
* 通过process.argv读取命令行参数,其构造如下
* 1.process.argv返回为是一个数组形式
* 2.process.argv[0] 当前命令,一般为node,因为通过node执行
* 3.process.argv[1] 当前命令执行的脚本完整路径
* 4.process.argv[2,n] 命令参数
*/
//这里要实现通过命令行传参数进行求和的算法
console.log("1.当前执行的命令为:",process.argv[0]);
console.log("2.执行的脚本地址为:",process.argv[1]);
//这里截取参数数组中有效的参数列表
var params = process.argv.slice(2);
console.log("3.执行的命令参数为:",params);
var result = 0;
for(var i = 0;i<params.length;i++){
//由于传入的参数都是字符串,所以要通过parseFloat进行转换
var v = parseFloat(params[i]);
//在转换后的值,可能存在非法的非数值的结果,
//所以通过isNaN进行判断是否为非数值,如果为非数值,则跳过
if(isNaN(v)) continue;
result += v;
}
console.log("4.计算后的有效值的和为:",result);
执行
node process-argv.js 1 2 H 3 4
1.当前执行的命令为: node
2.执行的脚本地址为: /home/code/workspace/node/core/process-argv.js
3.执行的命令参数为: [ '1', '2', 'H', '3', '4' ]
4.计算后的有效值的和为: 10
最后一个例子
process.argv.forEach(function (val, index, array) {
switch(val){
case "-x":
xlsxDir = process.argv[index+1];
case "-w":
asDir=process.argv[index+1];
break;
case "-s":
serverDir=process.argv[index+1];
break;
case "-d":
dataDir=process.argv[index+1];
break;
}
});
执行
@echo off
set PRO_PATH=../WgameH5/wgameH5Client/
set XLSX_PATH=../WGameConfig/xlsx
set AS_PATH=%PRO_PATH%src/data/staticData
set DATA_PATH=%PRO_PATH%bin/h5/res/data
set SERVER_PATH=./xml
del /q "%AS_PATH%\"
del /q "%DATA_PATH%"
echo "******************node run ing *********************************"
node excelExport.js -x %XLSX_PATH% -w %AS_PATH% -d %DATA_PATH% -s %SERVER_PATH%
pause