2015-11-20 26 views
0

我要赶在这个“做”在控制台输出的时间,但我不知道如何做到这一点:如何使用Nodejs捕获命令行输出?

var cp = require('child_process'); 

cp.exec('avconv -strict experimental -i ' + filename + ' ' + tempname + ';' + ' echo done', function(err, stdout, stderr) { 
    console.log(err); 
    console.log(stdout); 
    console.log(stderr); 
}); 

试图检查标准输出,但它只是带来了大量的信息,有关文件。

avconv是一个转换文件的工具,所以我在这里的目标是检查何时完成转换并继续进行。

回答

1

stdout确实从命令返回输出。你应该首先尝试一些简单的事情,看看你是否真正调用了命令。

试试这个:

child_process.exec('ls', function (err, stdout, stderr){ 
    if (err) { 
     console.log("error: " + err.code); 
    } 
    console.log(stdout); 
}); 
+0

这个工作,它带回服务器文件夹的内容。有前面我的版本 - cp.exec('avconv -strict experimental -i'+ filename +''+ tempname +';'+'echo done',function(err,stdout,stderr)也有效,因此我不确定如果在完成输出或转换文件的过程中输出 – funguy

+1

代码完成后,您为什么需要输出'done'?您将知道'avconv'何时完成,因为您获得了回调 – Andrius

+1

@funguy [回调 - 进程终止时输出调用函数]](https://nodejs.org/api/child_process_exec_command_options_callback) –

0

你可以得到的时候exec的回调将被称为

var cp = require('child_process'); 
cp.exec('ls', function(err, stdout, stderr) { 
    console.log(new Date()) 
});