如何将Node.js的JavaScript文件作为批处理文件运行
目标
希望像在Windows系统中运行Node.js的JS文件,就像运行Bat文件一样。
首先
在 Windows 上有一个叫做 WSH(Windows Scripting Host)的 JScript,它是 JavaScript 的一种,可以通过双击保存为 .js 扩展名的文件来运行,非常方便。
然而,它有一些弱点,就是使用了相当古老的JavaScript。对于最近的前端开发人员和Node.js开发人员来说,可能会被嘲笑说根本用不了WSH。
所以,我們放棄了 WSH JScript,作為替代,將 Node.js 的 JavaScript 集成到 Bat 檔案中。
通过用Node.js JavaScript取代Windows Bat文件,可以提高Bat开发的效率。由于是Bat文件,因此可以轻松地通过图形用户界面(如资源管理器)进行调用。此外,Node.js程序与GUI之间的协作也非常方便。
请安装 Windows 版的 Node.js。
将Node.js的JavaScript嵌入到Bat文件中。
作为一个示例,我将下一个文件放置在 C:\temp\test\nodeInBat\ 这个位置。
//&cls&node %0 %1&pause > nul&exit
var child_process = require('child_process');
function cmdRun(command) {
return child_process.execSync(command).toString();
}
function cmdOut(command){
result = cmdRun(command);
console.log("> " + command + "\n => " + result);
return result;
}
cmdOut( "echo test" );
ret = cmdOut( "node -v" );
console.log( "nodejsバージョン:" + ret.match( /[0-9\.]+/ )[0]);
console.log("");
console.log("引数:"+ process.argv);
var i = 0;
process.argv.toString().split(',').forEach(function(element) {
i += 1;
console.log(i.toString() + ' ' + element);
});
运行.bat文件时,会显示命令提示符,并产生以下输出结果。
> echo test
=> test
> node -v
=> v9.10.1
nodejsバージョン:9.10.1
引数:C:\Program Files\nodejs\node.exe,C:\temp\test\nodeInBat\nodeInBat.bat
1 C:\Program Files\nodejs\node.exe
2 C:\temp\test\nodeInBat\nodeInBat.bat
如果在Bat文件中用拖放的方式传递参数为test.txt文件,则输出结果如下。
> echo test
=> test
> node -v
=> v9.10.1
nodejsバージョン:9.10.1
引数:C:\Program Files\nodejs\node.exe,C:\temp\test\nodeInBat\nodeInBat.bat,C:\temp\test\nodeInBat\test.txt
1 C:\Program Files\nodejs\node.exe
2 C:\temp\test\nodeInBat\nodeInBat.bat
3 C:\temp\test\nodeInBat\test.txt
我也确认了可以接收参数。
批处理文件的首行机制
我将解释一下nodeInBat.bat文件中的第一行Bat文件的内容。
这是第一行。
//&cls&node %0 %1&pause > nul&exit
- //
在JavaScript中这是注释,但在批处理文件中是无意义的命令。在批处理文件中,通常情况下此行是
'//' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
输出将如下所示。接下来是下一个命令。
- &cls
在这里,数据将被清除,因此变得不可见。
- &node %0 %1
在这里调用了node命令,%0代表这个文件自身,%1代表传递给Bat的参数。
由于将自己的文件作为参数传递给了node命令,因此这个文件的JavaScript代码会被执行。
- &pause
在这条命令中,会停止运行。
- > nul
将输出保存为空文件。如果不这样做,将会提示处于等待状态的暂停命令。
続行するには何かキーを押してください . . .
为了消除这个消息的出现,
- exit
这里,在文件中已经结束了作为Bat文件的处理。
这样做可以防止包含Node.js的Bat文件中的JavaScript部分代码被识别为Bat文件,并避免出现错误。
应用
去掉开头的”Pause”和”> null”,命令提示符窗口的显示会在执行后立即消失。
//&cls&node %0 %1&exit
如果你的Bat程序不需要显示输出结果,可以按照以下步骤处理。
另外,如果想要接受更多的参数,可以通过以下方式增加%数字。
//&cls&node %0 %1 %2 %3 %4&pause > nul&exit
请提供更多上下文信息,以便我能够准确地为您提供答案。
用Node.js编写Windows批处理的模板。
感谢这段代码,我学到了很多。