有没有办法列出cmd.exe中的可用驱动器?
(除了手动键入

c:
d:
...


并查看哪些返回错误)

#1 楼

> wmic logicaldisk get caption

Caption
C:
D:
E:


如果最简单的话。不需要管理特权,返回的内容不会多于或少于所需的内容,等等。

如果要在脚本中使用它,请使用for /f选项将其包装在skip=1中:

for /f "skip=1 delims=" %%x in ('wmic logicaldisk get caption') do @echo.%%x


评论


仅适用于具有管理员权限的用户

–卡洛斯·坎德罗斯(CarlosCampderrós)
15年4月16日在16:16

@CarlosCampderrós:从有限的用户帐户来说,对我来说效果很好。

–乔伊
15年4月16日在16:51

来自support.microsoft.com/zh-cn/kb/290216的引用“无论本地计算机上的WMI名称空间权限如何,Wmic.exe只能由本地系统管理员使用”,并且在我的计算机(带有WinXP的VM)上失败)

–卡洛斯·坎德罗斯(CarlosCampderrós)
15年4月17日在8:42

在Windows 8.1上的非管理员帐户下,它可以正常工作。请注意,KB文章仅适用于旧版操作系统。

–乔伊
15年4月17日在10:33

@Joey,为什么标题而不是wmic logicaldisk获得名称?

–起搏器
2015年4月23日在17:33



#2 楼

如果您在命令提示符下:

diskpart


然后

list volume


示例输出:

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     E                       DVD-ROM         0 B  No Media
  Volume 1         System Rese  NTFS   Partition    100 MB  Healthy    System
  Volume 2     C   System       NTFS   Partition     99 GB  Healthy    Boot
  Volume 3     F   Data (local  NTFS   Partition    365 GB  Healthy


,最后

exit


返回命令行。

评论


与net use命令相比,此命令仅列出本地物理驱动器。 (我认为。)请参阅technet上的diskpart和support.microsoft.com上的diskpart

–嘎嘎吉qua德
2010年5月11日12:33



diskpart需要管理权限。如果您只想要一个驱动器盘符列表,可能会需要很多...

–乔伊
2010年5月11日13:30

无法将“ diskpart”识别为内部或外部命令,

–卡尔·莫里森(Karl Morrison)
19-10-1在10:13

#3 楼

为了完整起见,还有另一种方法:

fsutil fsinfo drives


它返回:

Drives: C:\ D:\ E:\ F:\


(这不是一个非常脚本友好的输出,但是对于人眼来说可能很有用)

一些参考。从win2k开始应该可以使用,但只能使用管理员帐户。

(感谢@CarlosCampderrós增强了答案)

评论


请注意,这仅在使用管理员帐户时有效

–卡洛斯·坎德罗斯(CarlosCampderrós)
15年4月16日在16:11

@CarlosCampderrós我认为这是不正确的。我可以以有限的用户身份运行fsutil,其结果比启动wmic系统快得多。在我只有运行Windows 10 v 1803的SSD的盒子上,wmic需要100-200ms,而fsutil需要约20ms。

–mrm
18-09-20在18:24



@mrm,某些Windows版本(或w10的发行版或内部版本)可能失去了此限制。我在wxp和w7pro上对此进行了测试,但在没有管理员帐户(AFAIR)的情况下失败了。

–saulius2
18-09-20在18:48

我第二次通过@ saulius2进行观察

–Fr0zenFyr
19年7月18日在4:46

#4 楼

如果您使用的是Powershell,则可以输入

get-psdrive -psprovider filesystem


根据评论进行编辑,仅显示文件系统

评论


这还将返回其他已安装的非文件系统驱动器,例如Cert:,Alias:和Function:。此外,它将返回安装为PSDrive的其他文件系统目录(例如Home:对于我的%UserProfile%)。

–乔伊
2010年5月11日13:31

这是唯一对我有用的答案。所有其他解决方案似乎都需要管理员访问权限。 (至少在我非常过时的Windows XP系统上。)

– Ajedi32
15年7月6日在17:22

如果您不介意列出非文件系统驱动器,则可以只使用get-psdrive。

–拨浪鼓
20年12月4日,0:36

#5 楼

wmic logicaldisk get volumename,name


您可以通过这种方式获取(查询)多个属性。
这将为您提供分区/驱动器号以及格式化驱动器时给驱动器/分区的标签:

Name  VolumeName
C:    OS
D:    Data
E:    Programs


寻求帮助并列出所有权限选项:

wmic logicaldisk /?


然后

wmic logicaldisk get /?


评论


我试图获取CD / DVD ROM的驱动器号,而我能找到的最接近的东西是wmic logicaldisk获取名称,文件系统。普通驱动器将列为NTFS或FAT32,而CD / DVD ROM的文件系统将为空。

–akinuri
18年5月13日在13:51

更正:如果驱动器为空,则文件系统为空。如果没有,例如我现在有Windows 10光盘,它被列为UDF。

–akinuri
18年5月13日在13:58

#6 楼

使用内置的doskey函数创建一个别名,该别名将使用必需的属性运行wmic命令。

doskey v=wmic logicaldisk get caption


这将创建一个别名“ v”,只要键入该别名即可运行给定命令并列出所有大写字母。

评论


哦,很好,不了解doskey(例如powershell的Set-Alias)

– BananaAcid
16年6月15日在22:17

答案被低估了,使用CMD多年了,却从未意识到别名是一件很重要的事情。

–普罗米修斯
19年4月15日在18:41

#7 楼

要从cli中查看可用的驱动器及其安装点,请使用
mountvol
您还可以对某些命令(如chkdsk和诸如此类)使用未安装的卷GUID。

#8 楼

要批量访问驱动器,可以使用:
@echo off
for /f "tokens=2 delims==" %%a in ('wmic logicalDisk get caption /format:List ^| find /I "caption"') do (
  echo %%~a is your drive letter
  echo Do what you like here
)


#9 楼

在Powershell中,您可以使用以下命令列出阵列内的驱动器:
$drives=gdr -psp FileSystem|select -eXp root

此处选择root属性,该属性显示为C:\,其中name显示为C

#10 楼

在VBscript中,我们可以使用:
Dim fso,colDrives,objDrive
Set fso = CreateObject("Scripting.FileSystemObject")
Set colDrives = fso.Drives
For Each objDrive in colDrives
  Wscript.Echo "Drive letter: " & objDrive.DriveLetter
Next