中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-25 19:36
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 检查本地磁盘并判断类型 查看 2,287 回复 6
楼 主 检查本地磁盘并判断类型 发表于 2006-09-01 14:27 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
@echo off
setlocal enabledelayedexpansion
fsutil fsinfo drives>tmp.txt
for /f "skip=1 tokens=1,2 delims=驱动器 " %%a in ('find /v "" ^<tmp.txt') do (
if not defined aa (set aa=%%b) else set aa=!aa!;%%a
)
for %%i in (%aa%) do fsutil fsinfo drivetype %%i
del tmp.txt


初来乍到,请各位前辈指点一二..........
测试环境WIN XP SP2
我今后在论坛的目标就是做个超级坏人!!!
2 发表于 2006-09-01 15:09 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  今天才发现可以用fsutil来作本机信息查询,命令够强悍。

  这段代码还可以改造一下,不用生成临时文件:

@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


  另外,你的代码存在的问题如下:

  1、delims=驱动器 是不正确的分隔语句
  2、if not defined aa (set aa=%%b) else set aa=!aa!;%%a,格式应该是if not something (set1) else (set2),并且set的内容写得也有问题:比如,我在最开始加一句 set aa=1,问题立马出现;

[ Last edited by namejm on 2006-9-1 at 15:51 ]
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
3 发表于 2006-09-01 17:23 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
学到新命令。。。
4 发表于 2006-09-01 17:25 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
收下,这几天马上用上
5 发表于 2006-09-01 22:03 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  fsutil fsinfo drives^|find /v "" 这一句用得有点诡异,按照一般的理解,大多数人可能不会想到要用find /v "" 去过滤,直接用fsutil fsinfo drives就完事了。但是,如果代码没有管道符号后面的语句,则只会显示第一个磁盘分区的信息。百思不得其解。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
6 发表于 2006-09-03 00:05 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
不是诡异,是因为fsutil fsinfo drives 得出来的结果虽然中间有空格,但是他代表是回车符或者换行符的作用,所以你只得到了第一个分区的资料了
我今后在论坛的目标就是做个超级坏人!!!
7 发表于 2007-05-23 17:53 ·  中国 广东 广州 黄埔区 电信
中级用户
★★
积分 326
发帖 152
注册 2007-05-04 06:16
19年会员
UID 87412
性别 男
状态 离线
@echo off
:: code by 3742668 2006-12-6 CMD@XP
set /p x=输入盘符:
for /f "skip=1" %%i in ('wmic logicaldisk where "deviceid='%x%:'" get Description 2^>nul') do set type=%%i
if not defined type set type=此驱动器不存在!
echo %x%:盘的类型为: %type%
pause>nul
goto :eof
论坛跳转: