如何通过bat文件获取Windows系统上的驱动器号及其相关标签列表?
这将得到它的大部分:
Net Use
如果你有任何驱动器通过subst映射,你也需要得到那些:
Subst
为了完整起见,您可以在PowerShell中执行此操作(如果您使用的是Windows 7或已安装它):
gwmi win32_LogicalDisk -filter DriveType=4
您也可以使用WMI从命令提示符或batch file执行此操作:
wmic logicaldisk get caption,providername,drivetype,volumename
要使用diskpart,不需要创build中间文件。 尝试:
echo list volume | diskpart
@echo off cls setlocal enabledelayedexpansion set "_DRIVE.LETTERS.FREE=ZYXWVUTSRQPONMLKJIHGF EDCBA " for /f "skip=1 tokens=1,2 delims=: " %%a in ('wmic logicaldisk get deviceid^,volumename') do ( set "_DRIVE.LETTERS.USED=!_DRIVE.LETTERS.USED!%%a,%%b@" 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
快速,灵活,高效。 虽然有点复杂。
受斯科特启发
for %i in (abcdefghijklmnopqrstu vwxyz) do @%i: 2>nul && set/pz=%i <nul
也显示CD盘符。 不需要成为pipe理员。
如果任何人有幸能够使用Vista(Vista Ultimate SP2 b6002,在我的情况下),这里给出的gwmi和wmic片段并不完全正确,那么这就是我所做的工作。
对于gwmi ,如果您没有收到任何输出,请尝试将DriveType更改为3.如果仍有问题,请完全删除-filter选项并分析输出。
gwmi win32_LogicalDisk -filter DriveType=3
对于wmic ,如果您收到“无效GETexpression式”,请尝试将getexpression式放在引号中:
wmic logicaldisk get "caption,providername,drivetype,volumename"
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:\
这个网站有一个更简单的调用:
http://en.code-bude.net/2013/02/23/show-all-drives-in-command-prompt/
显示本地驱动器:
wmic logicaldisk get deviceid,volumename,description
如果只想显示特定types的驱动器,则可以进一步扩展wmic命令以包含where子句。
wmic logicaldisk其中drivetype = 2获取deviceid,volumename,description
types
0 =>未知
1 =>没有根目录
2 =>可移动磁盘
3 =>本地磁盘
4 =>networking驱动器
5 =>光盘
6 => RAM磁盘
@echo off echo list volume > scriptdiskpart diskpart/s scriptdiskpart del scriptdiskpart pause
for %%p in (abcdefghijklmnopqrstu vwxyz) do if exist %%p:\nul your_command_and_parameters_here
有点笨拙,但从batch file:
echo LIST VOLUME > temp.txt && diskpart /s temp.txt && del /q temp.txt
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卡
虽然它有足够的答案,我想添加一个,当你想在batch file中使用它。 如果你得到“无效的GETexpression式”,你可以把^放在','之前,如下所示:
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,providername^,drivetype^,volumename 2^>NUL`) do echo %%i %%l
@ECHO OFF IF NOT EXIST A: GOTO B :A VOL A: :B IF NOT EXIST B: GOTO C VOL B: :C IF NOT EXIST C: GOTO D VOL C: :D IF NOT EXIST D: GOTO E VOL D: :E IF NOT EXIST E: GOTO F VOL E: :F IF NOT EXIST F: GOTO G VOL F: :G IF NOT EXIST G: GOTO H VOL G: :H IF NOT EXIST H: GOTO I VOL H: :I IF NOT EXIST I: GOTO J VOL I: :J IF NOT EXIST J: GOTO K VOL J: :K IF NOT EXIST K: GOTO L VOL K: :L IF NOT EXIST L: GOTO M VOL L: :M IF NOT EXIST M: GOTO N VOL M: :N IF NOT EXIST N: GOTO O VOL N: :O IF NOT EXIST O: GOTO P VOL O: :P IF NOT EXIST P: GOTO Q VOL P: :Q IF NOT EXIST Q: GOTO R VOL Q: :R IF NOT EXIST R: GOTO S VOL R: :S IF NOT EXIST S: GOTO T VOL S: :T IF NOT EXIST T: GOTO U VOL T: :U IF NOT EXIST U: GOTO V VOL U: :V IF NOT EXIST V: GOTO W VOL V: :W IF NOT EXIST w: GOTO X VOL W: :X IF NOT EXIST X: GOTO Y VOL X: :Y IF NOT EXIST Y: GOTO Z VOL Y: :Z IF NOT EXIST Z: GOTO END VOL Z: :END