找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: novaa

批处理获得所有的磁盘

[复制链接]
发表于 2009-3-20 20:47:57 | 显示全部楼层
  1. set "p=c d e f g h i j k l m n o p q r s t u v w x y z"
  2. for %%a in (%p%) do (
  3. if exist %%a^: (echo 存在%%a盘)
  4. )
  5. pause
复制代码

[ 本帖最后由 stuqx 于 2009-3-20 20:49 编辑 ]
发表于 2009-5-8 21:48:33 | 显示全部楼层
应该认真学习了!!!
发表于 2009-5-14 10:45:28 | 显示全部楼层
想到的楼上都答了,原本想答wmic...
相同的思方再答就不好了;
那就绕圈子,从regedit析辨
那样用for可不可算是第四种方法呢... ...?
@echo off
@for /f  "tokens=3 delims=\:" %%i in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\" ^| findstr  /r "DosDevices"') do (
echo %%i:
)
pause

[ 本帖最后由 Taurus 于 2009-5-14 10:57 编辑 ]

评分

参与人数 1PB +2 收起 理由
cutebe + 2 方法又新,速度又快。

查看全部评分

发表于 2009-5-17 11:16:22 | 显示全部楼层

嘿嘿! 借别人的!

@echo off
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1 delims=\" %%a in ('fsutil fsinfo drives^|find /v ""') do (
    set aa=%%a
    set aa=!aa:~-2!
    for %%i in (!aa!) do fsutil fsinfo drivetype  %%i
)
pause
发表于 2009-5-18 20:28:40 | 显示全部楼层

回复 19楼 的帖子

你的方法,能得到多余的盘符,例如,我在机子上用过U盘,盘符为H,我把U盘拔掉。
你的方法仍然可以检测到U盘的盘符H的存在。
发表于 2009-5-20 20:30:56 | 显示全部楼层
再来一个未有的
用 diskpart 命令
@echo off
for /f "skip=9 tokens=3" %%i in ('echo list volume ^| diskpart ') do echo %%i:
pause>nul

[ 本帖最后由 Taurus 于 2009-5-20 20:47 编辑 ]

评分

参与人数 1PB +5 收起 理由
keen + 5 牛!以前没有注意过diskpart。

查看全部评分

发表于 2024-1-2 16:43:23 | 显示全部楼层
@echo off
for %%i 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 if exist %%i: echo %%i:
pause
发表于 2024-10-19 21:37:38 | 显示全部楼层
回复 21# Taurus
请教一下大神:
如何将盘符赋值给变量str?(如str=c d e f g)
发表于 2024-10-19 22:35:47 | 显示全部楼层
回复 23# 青青草


  
  1. @echo off
  2. for /f "skip=9 tokens=3" %%i in ('echo list volume ^| diskpart ') do (
  3.         call set str=%%i %%str%%
  4. )
  5. pause>nul
复制代码
发表于 2024-10-19 23:02:11 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-10-19 23:12 编辑

回复 23# 青青草

方法一》计入光驱

  1. @echo off
  2. for /f "tokens=1* delims=: " %%1 in (' fsutil.exe fsinfo drives^|find ":" ') do set "dl=%%2"
  3. set "dl=%dl::\=%"
  4. echo,%dl%
  5. pause&exit/b
复制代码
方法二》不计入光驱

  1. @echo off &setlocal enabledelayedexpansion &set "dl="
  2. for %%d 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 if exist %%d: set "dl=!dl!%%d "
  3. echo,!dl!
  4. endlocal&pause&exit/b
复制代码
发表于 2024-10-19 23:59:59 | 显示全部楼层
回复 24# 77七
谢谢!
再次请教:
     隐藏分区出现的是卷标,不是盘符。如何去掉它?(只显示可见分区盘符)
如,我的系统共有5个分区,C  D  E  F 还有隐藏的ESP分区。结果批处理中 str=F E ESP C D
我需要的是str=F E C D
应如何处理?谢谢!
发表于 2024-10-20 00:00:39 | 显示全部楼层
回复 25# aloha20200628

谢谢!
发表于 2024-10-20 00:48:34 | 显示全部楼层
回复 24# 77七
另外,虚拟磁盘盘符似乎不能显示出来。
发表于 2024-10-20 00:58:02 | 显示全部楼层
回复 28# 青青草


  
  1. @echo off
  2. for /f "delims=:" %%i in ('wmic logicaldisk get name ^| find ":"') do (
  3.         call set str=%%i %%str%%
  4. )
  5. echo %str%
  6. pause
复制代码
试试这个
发表于 2024-10-20 01:04:02 | 显示全部楼层
本帖最后由 青青草 于 2024-10-20 01:05 编辑

回复 29# 77七
谢谢!
Windows 11 24H2 已经没有了wmic。无法运行。
个人还是比较喜欢用diskpart
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:46 , Processed in 0.029999 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表