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