it-swarm.cn

如何通过Windows Shell(bat,cmd)获取系统上的驱动器号列表?

如何通过bat文件在Windows系统上获取驱动器号及其相关标签的列表?

26
Chris Magnuson

这将得到大部分:

Net Use

如果您有任何通过subst映射的驱动器,则还需要获取这些驱动器:

Subst

为了完整起见,您可以在Powershell中这样做(如果您在Windows 7上或已经安装了它):

gwmi win32_LogicalDisk -filter DriveType=4

您也可以使用WMI从命令提示符或批处理文件中执行以下操作:

wmic logicaldisk get caption,providername,drivetype,volumename
37
EBGreen

要使用diskpart,无需创建中间文件。尝试:

echo list volume | diskpart
15
gnoise
@echo off
cls
setlocal enabledelayedexpansion
set "_DRIVE.LETTERS.FREE=Z Y X W V U T S R Q P O N M L K J I H G F E D C B A "
for /f "skip=1 tokens=1,2 delims=: " %%a in ('wmic logicaldisk get deviceid^,volumename') do (
   set "_DRIVE.LETTERS.USED=!_DRIVE.LETTERS.USED!%%a,%%[email protected]"
   set "_DRIVE.LETTERS.FREE=!_DRIVE.LETTERS.FREE:%%a =!"
)
set _DRIVE.LETTERS.USED=%_DRIVE.LETTERS.USED:~0,-2%
set _DRIVE.LETTERS.USED=%_DRIVE.LETTERS.USED:,@=, @%
set _DRIVE.LETTERS

快速,灵活和高效。虽然有点复杂。

10
Dharma Leonardi

受斯科特启发

for %i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do @%i: 2>nul && set/pz=%i <nul

还显示CD驱动器号。无需成为管理员。

7
Yuning
mountvol

样本输出

\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
   *** NO MOUNTING POINT ***

\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
   D:\

\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
   C:\

\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
   E:\
5
Jader Dias

如果有人足够幸运能够使用Vista(在我的情况下为Vista Ultimate SP2 b6002)和gwmi和- wmic此处给出的代码片段无法完全正常运行,这是我为使其正常工作所做的。

对于gwmi,如果没有输出,请尝试将DriveType更改为3。如果仍然有问题,请完全删除-filter选项并分析输出。

gwmi win32_LogicalDisk -filter DriveType=3

对于wmic,如果收到“无效的GET表达式”,则尝试将get表达式放在引号中:

wmic logicaldisk get "caption,providername,drivetype,volumename"
4
tdowg1
@echo off
echo list volume > scriptdiskpart
diskpart/s scriptdiskpart
del scriptdiskpart
pause
2
5d4gd

该站点的呼叫集要简单得多:

http://zh.code-bude.net/2013/02/23/show-all-drives-in-command-Prompt/

显示本地驱动器:

wmic logicaldisk获取设备ID,卷名,描述


如果只想显示特定类型的驱动器,则可以进一步扩展wmic命令以包括where子句。

wMIC逻辑磁盘,其中drivetype = 2获取设备标识,卷名,描述

种类

0 =>未知

1 =>没有根目录

2 =>可移动磁盘

3 =>本地磁盘

4 =>网络驱动器

5 =>光盘

6 => RAM磁盘

2
David Tr
for %%p in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%p:\nul your_command_and_parameters_here
1
pbies
for %a in (c: d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: x: y: z:) do @vol %a 2>&1 | find "drive"

我发现diskpart方法报告没有插入光盘的DVD驱动器,并且没有报告具有有效驱动器卷的SD卡

1
Nick

有点笨拙,但可以在批处理文件中工作:

echo LIST VOLUME > temp.txt && diskpart /s temp.txt && del /q temp.txt
0
Nexus

尽管它有足够的答案,但是我想在批处理文件中使用它时添加一个。如果收到“无效的GET表达式”,则可以在','之前加上^,如下所示:

for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,providername^,drivetype^,volumename 2^>NUL`) do echo %%i %%l
0
Mingjiang Shi