Javascript 检测所有顶级目录
我想做的是检测Windows上的所有顶级目录(即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}:\\`)) 有人知道还有其他方法吗?如果您同意
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:)