【问题标题】:Can I find server-side hard drive letter using node.js?我可以使用 node.js 找到服务器端硬盘驱动器号吗?
【发布时间】:2019-11-11 19:43:59
【问题描述】:

有没有办法使用 node.js 查找服务器端硬盘驱动器名称,如 C:、D:、E: 等?

【问题讨论】:

    标签: node.js


    【解决方案1】:

    在windows中,你可以使用这个命令wmic logicaldisk get caption

    在 Nodejs 中,您可以为此 cammand 生成一个新进程。

     var exec = require('child_process').exec;
        function showLetter(callback) {
            exec('wmic logicaldisk get caption', function(err, stdout, stderr) {
                if(err || stderr) {
                    console.log("root path open failed" + err + stderr);
                    return;
                }
                callback(stdout);
            }
        }
    

    【讨论】:

      【解决方案2】:

      我们为此构建了一个名为drivelist 的模块,它适用于所有主要操作系统。例如,在 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 属性区分它们。

      【讨论】:

      • 根据您的需要,drivelist 可能不适合您。 Windows 和 Linux 上的软件 RAID 中的驱动器不会显示挂载点。这实际上列出了物理驱动器,不一定是挂载点。
      【解决方案3】:

      Node.js 方式:

      import * as path from 'path';
      const cwdOSRoot = path.parse(process.cwd()).root;
      const fileOSRoot = path.parse(__dirname).root;
      

      需要注意的是,一个会得到当前工作目录的盘符,另一个会得到包含此代码的文件所在的驱动器的盘符。您可以将process.cwd()__dirname 替换为任何绝对路径来获取驱动器号。

      第二种方式:

      import * as os from 'os';
      import * as path from 'path';
      const cwdOSRoot = os.platform() === 'win32' ? `${process.cwd().split(path.sep)[0]}:` : '/';
      const fileOSRoot = os.platform() === 'win32' ? `${__dirname.split(path.sep)[0]}:` : '/';
      

      然后只需使用path.joinpath.normalizepath.resolve 等。此代码适用于任何操作系统。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-06
        • 2011-02-07
        • 2014-10-11
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 2016-10-31
        • 1970-01-01
        相关资源
        最近更新 更多