Board logo

标题: 检查本地磁盘并判断类型 [打印本页]

作者: 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