如何读取命令行输出
How to read command line output
我想在Nodejs中打开一个批处理文件并读取其输出,而它正在打印(而不是所有内容,当批处理完成时)。
例如,像詹金斯/哈德逊。
我知道这只适用于Windows。任何关于如何做到这一点的完整示例都会有所帮助,因为我对Nodejs非常陌生。
我相信您可以使用Node的子进程来运行您的命令,并在它打印时监视它的输出。这在Windows上没有任何限制,所以我可能在你的问题中遗漏了一些东西。让我解释一下你能做什么,希望它能回答这个问题。
假设您有一个输出一些文本的文件,但是需要一段时间才能输出,而不是一次全部输出。我们将这个文件命名为print-something.js
。(我知道您谈到了批处理文件,但是知道child_process
可以执行任何可执行文件。因此,这里我将通过Node运行JavaScript文件,但您可以以相同的方式执行批处理文件。
print-something.js
var maxRuns = 5,
numRuns = 0;
function printSomething() {
console.log('some output');
setTimeout(function() {
numRuns++;
if (numRuns < maxRuns) {
printSomething();
}
}, 1000);
}
printSomething();
这个文件做什么并不重要,但是如果你研究它,你会看到它打印了5次"some output",但是每个语句之间有1秒的间隔。从命令行运行该命令(通过node print-something.js
)将得到:
一些输出
一些输出
一些输出
一些输出
一些输出
这样,我们就有了一个以延迟方式输出文本的文件。将我们的注意力转向读取输出的文件,我们有:
monitor-output.js
var spawn = require('child_process').spawn,
command = spawn('node', ['print-something.js']);
command.stdout.on('data', function(data) {
console.log('stdout: ' + data);
});
command.on('close', function (code) {
console.log('child process exited with code ' + code);
});
这个文件生成一个进程node print-something.js
,然后开始检查它的标准输出。每次获取数据时,它都会将其打印到控制台。最后,当执行完成时,它输出退出代码。运行node monitor-output.js
的结果是:
stdout:一些输出
stdout:一些输出
stdout:一些输出
stdout:一些输出
stdout:一些输出
子进程退出,代码0
很可能您不会将此文件的输出打印到控制台,但这就是我们在这里所做的只是为了说明。希望这能让您了解如何在运行时监视文件的输出,并在child_process
中对其进行处理。
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 命令行中的Uglify js;不要弄乱变量名
- 如何在没有单词的情况下从命令行运行Node.js程序'节点'
- 类似HTML命令行的文本框
- 节点JS express和控制台输出到命令行与浏览器
- 如何将.json文件作为参数导入.js文件并使用命令行启动它
- 最小化CSS/JS文件,并使用命令行创建一个文件
- 自动关闭或覆盖通过命令行打开的浏览器选项卡
- 如何在节点模块中从命令行运行函数
- 如何在命令行中运行/调试javascript
- 从命令行安装时出现错误
- 如何在启动 Web 驱动程序实例之前通过命令行在 conf.js 中传递设备名称
- 使用 Node.js 执行命令行二进制文件
- 我们可以通过命令行从flash导出到createjs吗
- 节点命令行详细输出
- NodeJS-将命令行输出存储为var,并通过res.send()将其返回到客户端
- 使用javascript在html页面上显示bash命令行输出
- 如何读取命令行输出
- 为什么我的phantomjs脚本输出没有截图(命令行args版本)
- 日志Grunt命令行输出到浏览器