AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 62578
Accepted
Chris Magnuson
Chris Magnuson
Asked: 2009-09-05 12:46:51 +0800 CST2009-09-05 12:46:51 +0800 CST 2009-09-05 12:46:51 +0800 CST

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

  • 772

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

windows batch-file windows-command-prompt
  • 14 14 个回答
  • 119248 Views

14 个回答

  • Voted
  1. Best Answer
    EBGreen
    2009-09-05T12:51:28+08:002009-09-05T12:51:28+08:00

    这将得到大部分:

    Net Use
    

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

    Subst
    

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

    gwmi win32_LogicalDisk -filter DriveType=4
    

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

    wmic logicaldisk get caption,providername,drivetype,volumename
    
    • 41
  2. gnoise
    2012-12-06T07:41:33+08:002012-12-06T07:41:33+08:00

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

    echo list volume | diskpart
    
    • 16
  3. Dharma Leonardi
    2011-05-12T15:55:27+08:002011-05-12T15:55:27+08:00
    @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,%%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
    

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

    • 11
  4. Yuning
    2010-09-14T19:58:57+08:002010-09-14T19:58:57+08:00

    受斯科特启发

    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
  5. Jader Dias
    2012-08-18T09:59:37+08:002012-08-18T09:59:37+08:00
    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
  6. tdowg1
    2010-07-24T19:19:55+08:002010-07-24T19:19:55+08:00

    如果有人幸运地使用了 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
  7. 5d4gd
    2010-12-19T14:14:18+08:002010-12-19T14:14:18+08:00
    @echo off
    echo list volume > scriptdiskpart
    diskpart/s scriptdiskpart
    del scriptdiskpart
    pause
    
    • 2
  8. David Tr
    2013-11-08T08:46:45+08:002013-11-08T08:46:45+08:00

    这个站点有一组更简单的调用:

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

    显示本地驱动器:

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


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

    wmic logicaldisk where drivetype=2 get deviceid, volumename, description

    类型

    0 => 未知

    1 => 没有根目录

    2 => 可移动磁盘

    3 => 本地磁盘

    4 => 网络驱动器

    5 => 光盘

    6 => 内存盘

    • 2
  9. Nick
    2010-12-21T08:44:15+08:002010-12-21T08:44:15+08:00
    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
  10. pbies
    2013-05-20T09:55:53+08:002013-05-20T09:55:53+08:00
    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

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve