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

[系统相关] 批处理怎样检测本机硬盘的所有驱动器盘符?

目的:用脚本检测并显示出本机所有的驱动器盘符,并指出哪个是最后一个盘。
   如果能排除移动设备和光驱就更加完美
我有一个思路,是
@echo off
set  /p pan=c,d,e,f,........z
  :check
if  exist c goto check
您最后一个盘为c
exit
就是按照c d e f g h 顺序如果在check里面能检测到盘那么就又回到check再检测直到检测到不存在就停止并输出您最后一个盘符为上一次检测到的盘,
打个比方说:检测完了C存在就goto check 检测d   D存在就又goto check  如果检测e不存在就显示说  您最后一个盘是D盘,最关键的是我不想让代码很庞大,把check c  check d check e  check f直到check z都写在里面,而只有一个check 难的是怎么设置变量让check会按照c d e f 这样顺序检测下去,
最后 当然 估计应该还有别的方法的。

  1. fsutil fsinfo drives
复制代码
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

检测盘符的命令老早就有了,前两天还被管理员先生顶上来过...
一般有三种办法:
fsutil fsinfo drives

wmic logicaldisk deviceid

for %%a in (c d e f .....到z) do if exist %%a:\nul echo %%a:\

似乎第三种比较符合楼主的意思:
  1. for %%a in (c d e f .....到z) do if exist %%a:\nul set pan=%%a:\
  2. echo 您最后一个盘是%pan%
复制代码

TOP

  1. @echo off
  2. for /f "skip=1 tokens=1,2 delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do set a=%%i
  3. echo 最后一个盘符是:%a:~-2,1%
  4. pause
复制代码
但是个人推荐
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "skip=1 tokens=1,2 delims=\" %%a in ('fsutil fsinfo drives^|find /v ""') do (
  4.     set aa=%%a
  5.     set aa=!aa:~-2!
  6.     for %%i in (!aa!) do fsutil fsinfo drivetype %%i
  7. )
  8. pause
复制代码
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

不需要那个find /v,空行在for中自然会轮空

TOP

哇,高手,受教了,多谢多谢,不过似乎怎么去掉光驱和移动设备呢?

TOP

fsutil fsinfo drivetype 这个命令能列出驱动器的类型,怎么样才能知道哪个是最后一个固定驱动器?

TOP

  1. @echo off
  2. for /f "skip=1" %%a in ('wmic logicaldisk where DriveType^=3 get DeviceID') do set a=%%a
  3. echo 最后一个 %a%
  4. pause
复制代码
  1. @echo off
  2. for %%a in (c d e f g h i j k l m n o p q r s t u u v x y z) do fsutil fsinfo drivetype %%a:|(find "固定">nul&&set a=%%a:)
  3. echo 最后一个 %a%
  4. pause
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表