标题: [系统相关] 批处理怎样检测本机硬盘的所有驱动器盘符? [打印本页]
作者: winsfly 时间: 2011-2-16 00:06 标题: 批处理怎样检测本机硬盘的所有驱动器盘符?
目的:用脚本检测并显示出本机所有的驱动器盘符,并指出哪个是最后一个盘。
如果能排除移动设备和光驱就更加完美
我有一个思路,是
@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 这样顺序检测下去,
最后 当然 估计应该还有别的方法的。
作者: wc726842270 时间: 2011-2-16 00:16
复制代码
作者: CrLf 时间: 2011-2-16 02:18
检测盘符的命令老早就有了,前两天还被管理员先生顶上来过...
一般有三种办法:
fsutil fsinfo drives
wmic logicaldisk deviceid
for %%a in (c d e f .....到z) do if exist %%a:\nul echo %%a:\
似乎第三种比较符合楼主的意思:- for %%a in (c d e f .....到z) do if exist %%a:\nul set pan=%%a:\
- echo 您最后一个盘是%pan%
复制代码
作者: wc726842270 时间: 2011-2-16 07:44
- @echo off
- for /f "skip=1 tokens=1,2 delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do set a=%%i
- echo 最后一个盘符是:%a:~-2,1%
- pause
复制代码
但是个人推荐- @echo off
- setlocal enabledelayedexpansion
- for /f "skip=1 tokens=1,2 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
复制代码
作者: CrLf 时间: 2011-2-16 13:10
不需要那个find /v,空行在for中自然会轮空
作者: winsfly 时间: 2011-2-20 18:07
哇,高手,受教了,多谢多谢,不过似乎怎么去掉光驱和移动设备呢?
作者: winsfly 时间: 2011-2-20 20:22
fsutil fsinfo drivetype 这个命令能列出驱动器的类型,怎么样才能知道哪个是最后一个固定驱动器?
作者: hanyeguxing 时间: 2011-2-21 18:27
- @echo off
- for /f "skip=1" %%a in ('wmic logicaldisk where DriveType^=3 get DeviceID') do set a=%%a
- echo 最后一个 %a%
- pause
复制代码
- @echo off
- 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:)
- echo 最后一个 %a%
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |