Node.js文件/文件夹在用户输入上自动完成

时间:2017-02-13 05:46:04

标签: node.js cmd

我在Node.js中创建一个接收用户输入的cmd程序,其中一个输入是一个文件夹。

现在我想让用户更容易选择一个文件夹(比如使用诸如'cd'之类的命令时文件的cmd自动完成),而不是实际输入整个路径。

这样做有什么最好的做法吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

好的,所以在看了一下jiyinyiyong回答后,我能够得到我想要的东西。

基本上就是这样:

var readline = require('readline');
var fs = require('fs');

function completer(line) {
  var currAddedDir = (line.indexOf('/') != - 1) ? line.substring(0, line.lastIndexOf('/') + 1) : '';
  var currAddingDir = line.substr(line.lastIndexOf('/') + 1);
  var path = __dirname + '/' + currAddedDir;
  var completions = fs.readdirSync(path);
  var hits = completions.filter(function(c) { return c.indexOf(currAddingDir) === 0});

  var strike = [];
  if (hits.length === 1) strike.push(currAddedPath + hits[0] + '/');

  return (strike.length) ? [strike, line] : [hits.length ? hits : completions, line];
}

var rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  completer: completer
});

rl.question('whatever', function(answer) {
  // Do what ever
});