gpt4 book ai didi

javascript - 如何使用输入在 Node.js 中运行批处理文件并获得输出

转载 作者:可可西里 更新时间:2023-11-01 13:33:55 25 4
gpt4 key购买 nike

perl 中,如果您需要运行批处理文件,可以通过以下语句完成。

system "tagger.bat < input.txt > output.txt";

这里,tagger.bat是批处理文件,input.txt是输入文件,output.txt是输出文件。

我想知道是否可以在 Node.js 中完成?如果是,如何?

最佳答案

您需要创建一个子进程。 Unline Python,node.js 是异步的,这意味着它不会等待 script.bat 完成。相反,它会在 script.bat 打印数据或存在时调用您定义的函数:

// Child process is required to spawn any kind of asynchronous process
var childProcess = require("child_process");
// This line initiates bash
var script_process = childProcess.spawn('/bin/bash',["test.sh"],{env: process.env});
// Echoes any command output
script_process.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
// Error output
script_process.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
// Process exit
script_process.on('close', function (code) {
console.log('child process exited with code ' + code);
});

除了将事件分配给进程外,您还可以将流 stdinstdout 连接到其他流。这意味着其他进程、HTTP 连接或文件,如下所示:

// Pipe input and output to files
var fs = require("fs");
var output = fs.createWriteStream("output.txt");
var input = fs.createReadStream("input.txt");
// Connect process output to file input stream
script_process.stdout.pipe(output);
// Connect data from file to process input
input.pipe(script_process.stdin);

然后我们只做一个测试bash脚本test.sh:

#!/bin/bash
input=`cat -`
echo "Input: $input"

并测试文本输入input.txt:

Hello world.

运行 node test.js 后,我们在控制台中得到:

stdout: Input: Hello world.

child process exited with code 0

这在 output.txt 中:

Input: Hello world.

Windows 上的过程是类似的,我只是觉得你可以直接调用批处理文件:

var script_process = childProcess.spawn('test.bat',[],{env: process.env});

关于javascript - 如何使用输入在 Node.js 中运行批处理文件并获得输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33097849/

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