9

nodejsを使用して、Windowsのパーティションのリストを取得したいと思います。fs.readdir は、C: の下または C: を含む任意のフォルダーに対して正常に機能しますが、「C:」、「D:」などのパーティションのリストを取得するために何を指定すればよいかわかりません。

誰が私が何を使うべきか知っていますか?

4

4 に答える 4

12

node.js には、パーティションを一覧表示するための API はありません。1 つの回避策は、child_process を使用してwmicコマンド (またはパーティションを一覧表示できる任意のコマンド) を実行することです。

var spawn = require('child_process').spawn,
    list  = spawn('cmd');

list.stdout.on('data', function (data) {
  console.log('stdout: ' + data);
});

list.stderr.on('data', function (data) {
  console.log('stderr: ' + data);
});

list.on('exit', function (code) {
  console.log('child process exited with code ' + code);
});

list.stdin.write('wmic logicaldisk get name\n');
list.stdin.end();
于 2012-09-28T01:11:20.093 に答える
5

私の2セント:

わずかに強化 - 統合を容易にするコールバックを備えた関数は、ドライブの配列を返します:

/**
 * Get windows drives
 * */
function get_win_drives(success_cb,error_cb){
    var stdout = '';
    var spawn = require('child_process').spawn,
            list  = spawn('cmd');

    list.stdout.on('data', function (data) {
        stdout += data;
    });

    list.stderr.on('data', function (data) {
        console.log('stderr: ' + data);
    });

    list.on('exit', function (code) {
        if (code == 0) {
            console.log(stdout);
            var data = stdout.split('\r\n');
            data = data.splice(4,data.length - 7);
            data = data.map(Function.prototype.call, String.prototype.trim);
            success_cb(data);
        } else {
            console.log('child process exited with code ' + code);
            error_cb();
        }
    });
    list.stdin.write('wmic logicaldisk get caption\n');
    list.stdin.end();
}
于 2015-03-07T00:14:04.020 に答える