2012-09-27 42 views
6

Tôi muốn lấy danh sách các phân vùng trong các cửa sổ, sử dụng nodejs. fs.readdir hoạt động tốt cho bất kỳ thư mục nào dưới đây hoặc bao gồm C :, nhưng tôi không thể tìm ra những gì để cung cấp cho nó để có danh sách các phân vùng như "C:", "D:" v.v.liệt kê các phân vùng trong nútjs

Bất kỳ ai cũng biết tôi nên sử dụng cái gì?

Trả lời

8

Không có api trong node.js để liệt kê các phân vùng. Một cách giải quyết khác là sử dụng child_process và thực hiện lệnh wmic (hoặc bất kỳ lệnh nào có thể liệt kê các phân vùng).

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(); 
+0

nó hiện công việc, nhờ một tấn! – user1703467

3

My 2 cents:

Hơi nâng cao - một chức năng với callback cho tích hợp dễ dàng, trả về một mảng của ổ đĩa:

/** 
* 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(); 
} 
3

Không chắc chắn nếu nó phù hợp chính xác những gì bạn đang tìm kiếm cho, nhưng chúng tôi xây dựng một mô-đun NodeJS gọi là drivelist sẽ trả về một mảng các ổ đĩa được kết nối với các điểm gắn kết tương ứng của chúng (ví dụ: gắn các chữ cái trong Windows):

[ 
    { 
     device: '\\\\.\\PHYSICALDRIVE0', 
     description: 'WDC WD10JPVX-75JC3T0', 
     size: '1000 GB' 
     mountpoint: 'C:', 
     system: true 
    }, 
    { 
     device: '\\\\.\\PHYSICALDRIVE1', 
     description: 'Generic STORAGE DEVICE USB Device', 
     size: '15 GB' 
     mountpoint: 'D:', 
     system: false 
    } 
] 

Ổ đĩa không thể tháo rời được đánh dấu là system: false, bạn có thể lọc theo thuộc tính đó nếu đó là những gì bạn đang tìm kiếm.

Ưu điểm chính của mô-đun này là hoạt động trong tất cả các hệ điều hành chính.

Xem https://github.com/resin-io-modules/drivelist

0

một chút thực hiện đơn giản hơn:

const exec = require('child_process').exec; 
exec('wmic logicaldisk get name', (error, stdout, stderr) => { 
    if (error) { 
    console.error(`exec error: ${error}`); 
    return; 
    } 
    console.log('stdout ', stdout); 
    console.log('stderr ', stderr); 
}); 
Các vấn đề liên quan