參考
《Node.js開發(fā)指南 ByVoid》Page 59
process 是一個全局變量,即 global 對象的屬性。它用于描述當前 Node.js 進程狀態(tài)的對象,提供了一個與操作系統(tǒng)的簡單接口。通常在你寫本地命令行程序的時候,少不了要和它打交道。下面將會介紹 process 對象的一些最常用的成員方法。
一、agrv
process.argv 這個有什么用途?
Node.js的語法是與Javascript一樣嗎
process.argv返回命令行腳本的各個參數(shù)組成的數(shù)組??梢垣@取bat里面的參數(shù)。
// 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命令以空格為標記,拆成一個數(shù)組。索引0是node命令,索引1是運行路徑。索引2開始就是參數(shù)了。
這個用處挺多的。例如你在bat的文件這樣寫。node app 127.0.0.1 7001 這時候通過.argv [2] 得到IP,argv[3]得到端口,更方便我們修改配置。
再看個例子:
/**
* 通過process.argv讀取命令行參數(shù),其構造如下
* 1.process.argv返回為是一個數(shù)組形式
* 2.process.argv[0] 當前命令,一般為node,因為通過node執(zhí)行
* 3.process.argv[1] 當前命令執(zhí)行的腳本完整路徑
* 4.process.argv[2,n] 命令參數(shù)
*/
//這里要實現(xiàn)通過命令行傳參數(shù)進行求和的算法
console.log("1.當前執(zhí)行的命令為:",process.argv[0]);
console.log("2.執(zhí)行的腳本地址為:",process.argv[1]);
//這里截取參數(shù)數(shù)組中有效的參數(shù)列表
var params = process.argv.slice(2);
console.log("3.執(zhí)行的命令參數(shù)為:",params);
var result = 0;
for(var i = 0;i<params.length;i++){
//由于傳入的參數(shù)都是字符串,所以要通過parseFloat進行轉換
var v = parseFloat(params[i]);
//在轉換后的值,可能存在非法的非數(shù)值的結果,
//所以通過isNaN進行判斷是否為非數(shù)值,如果為非數(shù)值,則跳過
if(isNaN(v)) continue;
result += v;
}
console.log("4.計算后的有效值的和為:",result);
執(zhí)行
node process-argv.js 1 2 H 3 4
1.當前執(zhí)行的命令為: node
2.執(zhí)行的腳本地址為: /home/code/workspace/node/core/process-argv.js
3.執(zhí)行的命令參數(shù)為: [ '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;
}
});
執(zhí)行
@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