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

批处理获得所有的磁盘

最好用两种方法作答。
一种也可以
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

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

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

TOP

回复 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
复制代码
试试这个
bat小白,请多指教!谢谢!

TOP

回复 24# 77七
另外,虚拟磁盘盘符似乎不能显示出来。

TOP

回复 25# aloha20200628

谢谢!

TOP

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

TOP

本帖最后由 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
复制代码

TOP

回复 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
复制代码
bat小白,请多指教!谢谢!

TOP

回复 21# Taurus
请教一下大神:
如何将盘符赋值给变量str?(如str=c d e f g)

TOP

@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

TOP

再来一个未有的
用 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 编辑 ]
1

评分人数

    • keen: 牛!以前没有注意过diskpart。PB + 5

TOP

回复 19楼 的帖子

你的方法,能得到多余的盘符,例如,我在机子上用过U盘,盘符为H,我把U盘拔掉。
你的方法仍然可以检测到U盘的盘符H的存在。
(*^_^*)

TOP

嘿嘿! 借别人的!

@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

TOP

想到的楼上都答了,原本想答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 编辑 ]
1

评分人数

    • cutebe: 方法又新,速度又快。PB + 2

TOP

应该认真学习了!!!

TOP

返回列表