标题: 检查本地磁盘并判断类型
[打印本页]
作者: 9527
时间: 2006-9-1 14:27
标题: 检查本地磁盘并判断类型
@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
作者: namejm
时间: 2006-9-1 15:09
今天才发现可以用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 ]
作者: NaturalJ0
时间: 2006-9-1 17:23
学到新命令。。。
作者: vkill
时间: 2006-9-1 17:25
收下,这几天马上用上
作者: namejm
时间: 2006-9-1 22:03
fsutil fsinfo drives^|find /v "" 这一句用得有点诡异,按照一般的理解,大多数人可能不会想到要用find /v "" 去过滤,直接用fsutil fsinfo drives就完事了。但是,如果代码没有管道符号后面的语句,则只会显示第一个磁盘分区的信息。百思不得其解。
作者: 9527
时间: 2006-9-3 00:05
不是诡异,是因为fsutil fsinfo drives 得出来的结果虽然中间有空格,但是他代表是回车符或者换行符的作用,所以你只得到了第一个分区的资料了
作者: qq43142691
时间: 2007-5-23 17:53
@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