2012-09-27 3 views
6

nodejs를 사용하여 Windows에서 파티션 목록을 가져오고 싶습니다. fs.readdir은 아래의 폴더 나 C :를 포함하여 잘 작동하지만 "C :", "D :"등과 같은 파티션 목록을 갖기 위해 무엇을 제공해야하는지 파악할 수 없습니다.nodejs에 파티션을 나열하십시오.

누구든지 내가 사용해야하는 것을 알고 있습니까?

답변

8

node.js에 파티션을 나열하는 API가 없습니다. 한 가지 해결 방법은 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(); 
+0

, 감사 톤! – user1703467

3

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

확실하지 약간 향상

쉽게 통합 할 콜백 함수, 드라이브의 배열을 반환 for,하지만 우리는 drivelist이라는 NodeJS 모듈을 만들어 각각의 마운트 포인트 (예 : 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 
    } 
] 

고정식 드라이브는 system: false으로 표시되어 있으므로 원하는 경우 해당 속성별로 필터링 할 수 있습니다.

이 모듈의 주요 이점은 모든 주요 운영 체제에서 작동한다는 것입니다.

0

https://github.com/resin-io-modules/drivelist를 참조 약간의 간단한 구현 :

는 일을
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); 
}); 
관련 문제