Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测所有顶级目录_Javascript_Node.js_Windows_Filesystems_Fs - Fatal编程技术网

Javascript 检测所有顶级目录

Javascript 检测所有顶级目录,javascript,node.js,windows,filesystems,fs,Javascript,Node.js,Windows,Filesystems,Fs,我想做的是检测Windows上的所有顶级目录(即C:\,A:\,X:\,等等),因为这台电脑似乎无法访问 下面的代码可以工作,但显然并不理想,并且有许多缺点。例如,我认为名称空间甚至不限于A到Z,这会给这种方法带来重大问题 const fs = require('fs'), ab = 'abcdefghijklmnopqrstuvwxyz'.split('') ab.forEach(v => fs.existsSync(`${v}:\\`)) 有人知道还有其他方法吗?如果您同意

我想做的是检测Windows上的所有顶级目录(即
C:\
A:\
X:\
,等等),因为
这台电脑似乎无法访问

下面的代码可以工作,但显然并不理想,并且有许多缺点。例如,我认为名称空间甚至不限于
A
Z
,这会给这种方法带来重大问题

const
  fs = require('fs'),
  ab = 'abcdefghijklmnopqrstuvwxyz'.split('')

ab.forEach(v => fs.existsSync(`${v}:\\`))

有人知道还有其他方法吗?

如果您同意使用child\u流程,您可以这样做:

const child = require('child_process');

child.exec('wmic logicaldisk get name', (error, stdout) => {
    const drives = stdout.split('\r\r\n')
        .filter(value => /[A-Za-z]:/.test(value))
        .map(value => value.trim())

    //do stuff with drives
});

驱动器
将是一组可用的驱动器,如['C:',…]

谷歌给我的。-操作系统agnostic@KenY-N谢谢,我会查出来。@KenY-N-谷歌软件包在子进程中执行
wmic logicaldisk get caption
,并使用这些结果。@JaromandaX-通过本机代码支持多个操作系统,因此需要编译。它似乎支持mac、windows和linux。它实际上更支持多个操作系统,而不是操作系统不可知论。我将对此进行研究。使用
child\u进程
是否会引入漏洞,或者为什么我不能使用它?只要你这样使用它,就没有真正的缺点。要记住的主要一点是,在使用命令注入时,不希望允许命令注入。在本例中,我们已经对命令进行了硬编码,因此不能以任何方式利用它。好的,很酷。我应该在一周内有时间测试所有东西。我会告诉你事情的进展。再次谢谢你。它在cmd中吐出的所有其他信息是什么?另外,为了看看我是否理解发生了什么,它基本上打开一个shell来执行OS命令,然后返回任何内容,对吗?对我来说,stdout只是
Name\nC:\nD:\nE:
。是的,它用一个shell生成一个子进程,并在该shell中执行提供的命令,然后将输出作为stdout:)