Board logo

标题: 批处理获得所有的磁盘 [打印本页]

作者: novaa    时间: 2008-1-12 11:39     标题: 批处理获得所有的磁盘

最好用两种方法作答。
一种也可以
作者: xxx3212    时间: 2008-1-12 13:17

300批处理里面有个实例
作者: novaa    时间: 2008-1-12 18:00

不是实例的问题。而是给新手练习。
作者: awuxixi    时间: 2008-1-29 20:45

磁盘指的是硬盘分区还是cdrom\hd???
作者: novaa    时间: 2008-1-30 20:24

自然是指C盘。D盘之类得了。
作者: 随风    时间: 2008-3-24 15:46     标题: 回复 6楼 的帖子

不错啊!
wmic 感觉很难掌握的、、
用 wmic
用 fsutil
用 for 穷举
呵呵,最少有三种方法了。。

[ 本帖最后由 随风 于 2008-3-24 15:52 编辑 ]
作者: angelbbaa    时间: 2008-3-25 20:34

fsutil fsinfo drives
作者: chenyulzhh    时间: 2008-3-25 23:51

呵呵
受教了..
还得好好学习啊..
作者: hlam    时间: 2008-11-22 13:54

谢谢。。
从0开始。。
作者: stalker    时间: 2008-11-22 18:40

来个最丑的吧
  1. @echo off
  2. set entire=C D E F G H I J K L M N O P Q R S T U V W X Y Z
  3. for %%i in (%entire%) do if exist %%i: echo %%i:
  4. pause>nul
  5. exit
复制代码

作者: myzwd    时间: 2009-3-2 18:52     标题: 回复 1楼 的帖子

@echo off
set tt=C D E F G H I J K L M N O P Q R S T U V W X Y Z
for  %%1 in (%tt%) do (
  for /f "tokens=1 eol=卷" %%j in ('vol %%1:')  do (
    echo %%j%%1:
    )
)
:end
echo bye
作者: Batcher    时间: 2009-3-2 23:35     标题: 回复 12楼 的帖子

不能兼容英文版的操作系统吧?
作者: pzspdl    时间: 2009-3-4 22:21

原帖由 kclmx 于 2008-3-24 12:18 发表
获得硬盘盘符wmic logicaldisk where drivetype="3" get caption获得光驱盘符wmic logicaldisk where drivetype="5" get caption

太不好意思了,我不懂
作者: keen    时间: 2009-3-9 15:38

wmic
  1. @echo off
  2. wmic logicaldisk get caption,description,drivetype,filesystem,freespace,size
  3. pause
复制代码

作者: wangjmh    时间: 2009-3-18 23:39

@echo off
set str=c d e f g h i j k l m n o p q r s t u v w x y z
echo 当前硬盘的分区有:
for %%i in (%str%) do if exist %%i: echo %%i:
pause
作者: stuqx    时间: 2009-3-20 20:47

  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 编辑 ]
作者: sjzong    时间: 2009-5-8 21:48

应该认真学习了!!!
作者: Taurus    时间: 2009-5-14 10:45

想到的楼上都答了,原本想答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 编辑 ]
作者: dtyunong    时间: 2009-5-17 11:16     标题: 嘿嘿! 借别人的!

@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
作者: keen    时间: 2009-5-18 20:28     标题: 回复 19楼 的帖子

你的方法,能得到多余的盘符,例如,我在机子上用过U盘,盘符为H,我把U盘拔掉。
你的方法仍然可以检测到U盘的盘符H的存在。
作者: Taurus    时间: 2009-5-20 20:30

再来一个未有的
用 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 编辑 ]
作者: 唯尘    时间: 2024-1-2 16:43

@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

回复 21# Taurus
请教一下大神:
如何将盘符赋值给变量str?(如str=c d e f g)
作者: 77七    时间: 2024-10-19 22:35

回复 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
复制代码

作者: aloha20200628    时间: 2024-10-19 23:02

本帖最后由 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

回复 24# 77七
谢谢!
再次请教:
     隐藏分区出现的是卷标,不是盘符。如何去掉它?(只显示可见分区盘符)
如,我的系统共有5个分区,C  D  E  F 还有隐藏的ESP分区。结果批处理中 str=F E ESP C D
我需要的是str=F E C D
应如何处理?谢谢!
作者: 青青草    时间: 2024-10-20 00:00

回复 25# aloha20200628

谢谢!
作者: 青青草    时间: 2024-10-20 00:48

回复 24# 77七
另外,虚拟磁盘盘符似乎不能显示出来。
作者: 77七    时间: 2024-10-20 00:58

回复 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

本帖最后由 青青草 于 2024-10-20 01:05 编辑

回复 29# 77七
谢谢!
Windows 11 24H2 已经没有了wmic。无法运行。
个人还是比较喜欢用diskpart




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2