如何使用 nodejs 调用需要输入参数的 bat 文件

2019-08-09 16:25:22 +08:00
 asdjgfr

例如我有一个这样的bat文件:

set /p a=请输入 a:
pause
set /p b=请输入 b:
echo %a%  %b%

nodejs里我尝试了exec,execFile,spawn,readline也安装过第三方包execa。 都是只能输出,不能操作,遇到pause就会停止,应该怎么做才可以跳过pause并且输入参数? 感谢大神们。

4277 次点击
所在节点    Node.js
2 条回复
yangg
2019-08-09 16:38:13 +08:00
asdjgfr
2019-08-13 13:53:46 +08:00
手动顶一下,没有大神了吗?

例如我有一个这样的`bat`文件:
```shell
set /p a=请输入 a:
pause
set /p b=请输入 b:
echo %a% %b%
```
在`nodejs`里安装了第三方包[execa]( https://github.com/sindresorhus/execa#readme)。
```javascript
const execa = require('execa');
const path = require('path');
const fs = require('fs');

const testPath = path.join(__dirname, './test');

const subprocess = execa(path.join(DeepFaceLab, "test.bat"), [], {
cwd: testPath
});

subprocess.stdout.on('data', (data) => {
console.log(`输出:${data}`)
if (/a/ig.test(data)) {
subprocess.stdin.write('1');
//执行到这里就卡住了
//subprocess.stdin.end()
} else if ((/b/ig.test(data))) {
console.log('image')
subprocess.stdin.write('jpg');
//subprocess.stdin.end()
}
});

subprocess.stdout.on('end', (data) => {
console.log(`end 事件${data}`)
});
subprocess.stdout.on('close', (data) => {
console.log(`close 事件${data}`)
});
subprocess.stdout.on('error', (data) => {
console.log(`error 事件${data}`)
});

```
遇到`pause`就会停止,应该怎么做才可以跳过`pause`?
感谢大神们。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590515

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX