gpt4 book ai didi

windows - node.js:在新窗口中运行外部命令

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:11 26 4
gpt4 key购买 nike

我正在编写一个在后台永久运行并不时启动文件下载的node.js 脚本。我想使用 WGET 来下载文件,因为在我真正知道我在用 node.js 做什么之前,它看起来更强大。

问题是我想查看相关下载的进度。但我找不到通过node.js 为WGET 打开并显示新的shell 窗口的方式启动WGET 的方法。

Node 的 exec 和 spawn 函数在后台运行外部命令,并让我访问输出流。但由于我的脚本在后台运行(隐藏),因此我对输出流无能为力。

我尝试通过运行“cmd/c wget...”来打开一个新的 shell 窗口,但这没有任何区别。

有没有办法通过node.js在新窗口中运行外部命令行进程?

最佳答案

您可以使用node-progress和Node的http客户端(或requesT)来实现此目的,不需要wget:

https://github.com/visionmedia/node-progress

示例:

var ProgressBar = require('../')
, https = require('https');

var req = https.request({
host: 'download.github.com'
, port: 443
, path: '/visionmedia-node-jscoverage-0d4608a.zip'
});

req.on('response', function(res){
var len = parseInt(res.headers['content-length'], 10);

console.log();
var bar = new ProgressBar(' downloading [:bar] :percent :etas', {
complete: '='
, incomplete: ' '
, width: 20
, total: len
});

res.on('data', function(chunk){
bar.tick(chunk.length);
});

res.on('end', function(){
console.log('\n');
});
});

req.end();

更新:

由于您想在后台进程中执行此操作并监听下载进度(在单独的进程中或您拥有的进程中),因此您可以使用发布-订阅功能来实现这一点:

  • 使用 Redis、RabbitMQ 或 ZeroMQ 等消息队列
  • 在已知端口/UNIX 域上启动 TCP 服务器并监听它

资源:

http://nodejs.org/api/net.html

关于windows - node.js:在新窗口中运行外部命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10798586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com