无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 10972|回复: 41
打印 上一主题 下一主题

怎么在命令行下判断硬盘的数量?

[复制链接]
跳转到指定楼层
1#
发表于 2010-11-28 14:45:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想在PE或正常系统下,不利用第三方工具,不知道有什么方法可以判断硬盘的数量?
2#
发表于 2010-11-28 14:57:03 | 只看该作者
用眼睛看,不行吗?比如,磁盘管理

命令行
DISKPART
LIST DISK
回复

使用道具 举报

3#
 楼主| 发表于 2010-11-28 15:10:36 | 只看该作者

回复 #2 dvd008 的帖子

呵呵,就是不想用眼睛看,直接处理掉,呵呵,多谢提醒,还没注意到DISKPART有功能里面有这些,可怎么取磁盘数?

命令行我是外行,不知道怎么拿这个磁盘数出来
回复

使用道具 举报

4#
 楼主| 发表于 2010-11-30 18:53:10 | 只看该作者

回复 #4 zhxy9804 的帖子

方法是知道的,但不会写命令行,版版大人请给个能直接用的CMD行吗?
回复

使用道具 举报

5#
 楼主| 发表于 2010-12-1 18:48:31 | 只看该作者

回复 #6 zhxy9804 的帖子

呵呵,版版大人还真谦虚,本来是想做几个判断之类的东西,然后加到自己写的一个CMD里面的,不过想来想去要加的东西太多了,还是算了,就算这个解决了,下一个问题还是没有办法,呵呵。。。

本来是想这样加的,先判断硬盘有几个,跟着判断各个硬盘的是不是MBR类型和MBR的类别(比如:NT52或NT60),然后分别判断各个硬盘的活动主分区是哪个,这样就可以直接取盘符来用了,再按需要修改MBR的类型,到这就算完了,可能想来想去不用第三方工具光靠命令行应该很难做得出来的。。。。。。
回复

使用道具 举报

6#
 楼主| 发表于 2010-12-1 18:52:10 | 只看该作者
如果用第三方工具,GDISK32应该还不错,看了一下列出来的东西还真详细,呵呵:

Disk  Partitions  Cylinders  Heads  Sectors  Mbytes  Model
  1        5        98341     255      63  771416.3  WDC WD8088AADS-00L5B1

Partition  Status   Type     Volume Label   Mbytes   System   Usage
C:  1        A    PRIMARY    SYS-XP       65538.6  NTFS/HPFS   8%
     2             EXTENDED               705871.6             92%
D:  3             LOGICAL    SYS-WIN7     65538.6  NTFS/HPFS   8%
E:  4             LOGICAL    DAT         312647.8  NTFS/HPFS  41%
F:  5             LOGICAL    BAK         327685.2  NTFS/HPFS  42%
回复

使用道具 举报

7#
 楼主| 发表于 2010-12-2 09:50:55 | 只看该作者

回复 #9 zhxy9804 的帖子

呵呵,888G的硬盘现在来说不大了,我自己用的移动硬盘是2T的,其实一般来说,系统盘有个32G已经够用了,不过已经习惯用64G来做系统盘了,因为所有的软件都安装到系统盘里(这样是方便备份和更新),系统盘没有个几十G的空闲空间对于工作用的电脑还是不安全的,试过一台电脑用300DPI扫描了彩色A0的图纸一堆,扫完后无法保存,没地方写缓存,那是很郁闷的,呵呵。。。

[ 本帖最后由 0cat0 于 2010-12-2 09:53 编辑 ]
回复

使用道具 举报

8#
发表于 2010-12-2 10:44:51 | 只看该作者
原帖由 zhxy9804 于 2010-12-2 09:44 发表
你这分区分的真大啊,60G的盘用来装系统


60G不大啦,现在的硬盘都几百G甚至上T计算...呵呵~~
回复

使用道具 举报

9#
发表于 2010-12-2 10:45:42 | 只看该作者
原帖由 0cat0 于 2010-12-2 09:50 发表
呵呵,888G的硬盘现在来说不大了,我自己用的移动硬盘是2T的,其实一般来说,系统盘有个32G已经够用了,不过已经习惯用64G来做系统盘了,因为所有的软件都安装到系统盘里(这样是方便备份和更新),系统盘没有个 ...

AADS

用5400转的绿盘装系统不觉得慢吗?哈哈
回复

使用道具 举报

10#
发表于 2010-12-2 10:47:14 | 只看该作者
原帖由 zhxy9804 于 2010-12-2 10:45 发表

俺是说c盘分了60g

我也差不多啦...

装完WIN7 + 一些软件已经不见了20-30G了...再装些游戏的话所剩无几了...
回复

使用道具 举报

11#
发表于 2010-12-2 11:01:26 | 只看该作者
原帖由 0cat0 于 2010-11-30 18:53 发表
方法是知道的,但不会写命令行,版版大人请给个能直接用的CMD行吗?

给你写一下,看看合不合用

这个要放在GDISK32.EXE同目录下

[ 本帖最后由 andos 于 2010-12-2 11:22 编辑 ]

gdisk32.rar

244 Bytes, 下载次数: 43, 下载积分: 无忧币 -2

回复

使用道具 举报

12#
 楼主| 发表于 2010-12-2 11:31:51 | 只看该作者

回复 #15 andos 的帖子

多谢提供,可以找到多少个硬盘数了,不过我还得自己复习一下FOR命令,改改看能不能直接改到我想要的效果,呵呵。。。
回复

使用道具 举报

13#
发表于 2010-12-2 11:34:09 | 只看该作者
原帖由 0cat0 于 2010-12-2 11:31 发表
多谢提供,可以找到多少个硬盘数了,不过我还得自己复习一下FOR命令,改改看能不能直接改到我想要的效果,呵呵。。。

你只想要一个数字?

gdisk32.rar

224 Bytes, 下载次数: 30, 下载积分: 无忧币 -2

回复

使用道具 举报

14#
 楼主| 发表于 2010-12-2 11:51:23 | 只看该作者

回复 #17 andos 的帖子

再次多谢,其实最终要的东西很多,下面是我直接从7楼复制过来的,呵呵:

先判断硬盘有几个,跟着判断各个硬盘的是不是MBR类型和MBR的类别(比如:NT52或NT60),然后分别判断各个硬盘的活动主分区是哪个,这样就可以直接取盘符来用了,再按需要修改MBR的类型,到这就算完了


现在的问题来了,GDISK32不知道能不能判断硬盘是不是MBR及MBR类别?
回复

使用道具 举报

15#
 楼主| 发表于 2010-12-2 11:58:58 | 只看该作者
下面的命令可以看到硬盘的信息,可是不知道MBR类型怎么判断:

gdisk32 1 /view:0

Physical Disk 1, Sector 0:
---------------------------------------------------------
00000000  33 c0 8e d0 bc 00 7c 8e c0 8e d8 be 00 7c bf 00  3.....|......|..
00000010  06 b9 00 02 fc f3 a4 50 68 1c 06 cb fb b9 04 00  .......Ph.......
00000020  bd be 07 80 7e 00 00 7c 0b 0f 85 0e 01 83 c5 10  ....~..|........
00000030  e2 f1 cd 18 88 56 00 55 c6 46 11 05 c6 46 10 00  .....V.U.F...F..
00000040  b4 41 bb aa 55 cd 13 5d 72 0f 81 fb 55 aa 75 09  .A..U..]r...U.u.
00000050  f7 c1 01 00 74 03 fe 46 10 66 60 80 7e 10 00 74  ....t..F.f`.~..t
00000060  26 66 68 00 00 00 00 66 ff 76 08 68 00 00 68 00  &fh....f.v.h..h.
00000070  7c 68 01 00 68 10 00 b4 42 8a 56 00 8b f4 cd 13  |h..h...B.V.....
00000080  9f 83 c4 10 9e eb 14 b8 01 02 bb 00 7c 8a 56 00  ............|.V.
00000090  8a 76 01 8a 4e 02 8a 6e 03 cd 13 66 61 73 1c fe  .v..N..n...fas..
000000a0  4e 11 75 0c 80 7e 00 80 0f 84 8a 00 b2 80 eb 84  N.u..~..........
000000b0  55 32 e4 8a 56 00 cd 13 5d eb 9e 81 3e fe 7d 55  U2..V...]...>.}U
000000c0  aa 75 6e ff 76 00 e8 8d 00 75 17 fa b0 d1 e6 64  .un.v....u.....d
000000d0  e8 83 00 b0 df e6 60 e8 7c 00 b0 ff e6 64 e8 75  ......`.|....d.u
000000e0  00 fb b8 00 bb cd 1a 66 23 c0 75 3b 66 81 fb 54  .......f#.u;f..T
000000f0  43 50 41 75 32 81 f9 02 01 72 2c 66 68 07 bb 00  CPAu2....r,fh...
00000100  00 66 68 00 02 00 00 66 68 08 00 00 00 66 53 66  .fh....fh....fSf
00000110  53 66 55 66 68 00 00 00 00 66 68 00 7c 00 00 66  SfUfh....fh.|..f
00000120  61 68 00 00 07 cd 1a 5a 32 f6 ea 00 7c 00 00 cd  ah.....Z2...|...
00000130  18 a0 b7 07 eb 08 a0 b6 07 eb 03 a0 b5 07 32 e4  ..............2.
00000140  05 00 07 8b f0 ac 3c 00 74 09 bb 07 00 b4 0e cd  ......<.t.......
00000150  10 eb f2 f4 eb fd 2b c9 e4 64 eb 00 24 02 e0 f8  ......+..d..$...
00000160  24 02 c3 49 6e 76 61 6c 69 64 20 70 61 72 74 69  $..Invalid parti
00000170  74 69 6f 6e 20 74 61 62 6c 65 00 45 72 72 6f 72  tion table.Error
00000180  20 6c 6f 61 64 69 6e 67 20 6f 70 65 72 61 74 69   loading operati
00000190  6e 67 20 73 79 73 74 65 6d 00 4d 69 73 73 69 6e  ng system.Missin
000001a0  67 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74  g operating syst
000001b0  65 6d 00 00 00 63 7b 9a 7c e9 7c e9 00 00 80 01  em...c{.|.|.....
000001c0  01 00 07 fe ff ff 3f 00 00 00 a4 14 00 08 00 00  ......?.........
000001d0  c1 ff 05 fe ff ff e3 14 00 08 02 7d 2a 56 00 00  ...........}*V..
000001e0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000001f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa  ..............U.
回复

使用道具 举报

16#
 楼主| 发表于 2010-12-2 14:47:54 | 只看该作者
看了一下FOR命令,改了一下,还真不错,呵呵。。。

@ECHO OFF
for /f "tokens=1" %%i in ('gdisk32') do set disknumber=%%i
@ECHO 当前一共有:%disknumber% 个硬盘 && ECHO.
for /l %%i in (1,1,%disknumber%) do gdisk32 %%i && @ECHO.
@PAUSE


当前一共有:3 个硬盘
Disk  Partitions  Cylinders  Heads  Sectors  Mbytes  Model
  1        5        98341     255      63  771416.3  WDC WD8088AADS-00L5B1
Partition  Status   Type     Volume Label   Mbytes   System   Usage
C:  1        A    PRIMARY    SYS-XP       65538.6  NTFS/HPFS   8%
     2             EXTENDED               705871.6             92%
D:  3             LOGICAL    SYS-WIN7     65538.6  NTFS/HPFS   8%
E:  4             LOGICAL    DAT         312647.8  NTFS/HPFS  41%
F:  5             LOGICAL    BAK         327685.2  NTFS/HPFS  42%
Disk  Partitions  Cylinders  Heads  Sectors  Mbytes  Model
  2        1         4178     255      63   32774.0  Msft Virtual Disk 1.0
Partition  Status   Type     Volume Label   Mbytes   System   Usage
H:  1             PRIMARY    SYS-WIN7VHD  32772.0  NTFS/HPFS  99%
Disk  Partitions  Cylinders  Heads  Sectors  Mbytes  Model
  3        1         4178     255      63   32774.0  Msft Virtual Disk 1.0
Partition  Status   Type     Volume Label   Mbytes   System   Usage
I:  1             PRIMARY    SYS-WIN08R2VHD  32772.0  NTFS/HPFS  99%
请按任意键继续. . .



直接粘贴的效果还真差,截个图好看多了,呵呵:

[ 本帖最后由 0cat0 于 2010-12-2 14:54 编辑 ]

2010-12-02_145325.png (34.95 KB, 下载次数: 80)

2010-12-02_145325.png
回复

使用道具 举报

17#
 楼主| 发表于 2010-12-2 18:22:54 | 只看该作者
差不多可以用了,呵呵。。。

@ECHO OFF
FOR /F "TOKENS=1 DELIMS= " %%I IN ('GDISK32.EXE /STATUS') DO (SET DISKNUMBER=%%I)
@ECHO 当前一共有:%DISKNUMBER% 个硬盘 && ECHO.
FOR /F "TOKENS=1,8 DELIMS= " %%I IN ('GDISK32.EXE /RAW') DO (IF /I "%%J"=="MBR" ECHO 硬盘:%%I   主引导记录类型为:%%J)
FOR /L %%D IN (1,1,%DISKNUMBER%) DO (FOR /F "TOKENS=1,3,7 DELIMS= " %%I IN ('GDISK32.EXE %%D /STATUS') DO (IF /I "%%J"=="A" ECHO 硬盘:%%D   激活主分区盘符为:%%I   系统文件格式为:%%K && @ECHO.))
FOR /L %%I IN (1,1,%DISKNUMBER%) DO (GDISK32.EXE %%I /STATUS && @ECHO.)
@PAUSE

2010-12-02_182231.png (44.11 KB, 下载次数: 88)

2010-12-02_182231.png
回复

使用道具 举报

18#
发表于 2010-12-2 21:32:58 | 只看该作者
系统文件格式 好像有问题...

我这边改成TOKENS=1,3,6就可以...

[ 本帖最后由 andos 于 2010-12-2 21:37 编辑 ]

2010-12-02_213151.png (8.37 KB, 下载次数: 81)

2010-12-02_213151.png
回复

使用道具 举报

19#
 楼主| 发表于 2010-12-2 21:42:33 | 只看该作者

回复 #22 andos 的帖子

不是吧,我怎么数我这里是第7项,呵呵。。。

Partition  Status   Type     Volume Label   Mbytes   System   Usage
C:  1        A    PRIMARY    SYS-XP       65538.6  NTFS/HPFS   8%

能贴一个你的数据来看看不?

自己试了一下隐藏C盘,更郁闷了,全不对了,呵呵,看来还得改。。。。

>GDISK32 1 /STATUS
Disk  Partitions  Cylinders  Heads  Sectors  Mbytes  Model
  1        3        10443     255      63   81920.0  VMware V irtual IDE Hard 0
Partition  Status   Type     Volume Label   Mbytes   System   Usage
     1        A    PRIMARY                 65547.0  DIAGNOSTIC 80%
     2             EXTENDED                16371.0             20%
C:  3             LOGICAL                 16370.0  NTFS/HPFS  20%

[ 本帖最后由 0cat0 于 2010-12-2 21:57 编辑 ]
回复

使用道具 举报

20#
发表于 2010-12-2 22:00:56 | 只看该作者
仔细看了一下,是因为我没有Volume Label ,所以少了一个...
回复

使用道具 举报

21#
 楼主| 发表于 2010-12-3 08:03:56 | 只看该作者
看了一下,貌似GDISK32也无能为力了,最终CMD就这样了:

@ECHO OFF

FOR /F "TOKENS=1 DELIMS= " %%I IN ('GDISK32.EXE /STATUS') DO (SET DISKNUMBER=%%I)

@ECHO 当前一共有:%DISKNUMBER% 个硬盘 && ECHO.

FOR /L %%D IN (1,1,%DISKNUMBER%) DO (
  FOR /F "TOKENS=8 DELIMS= " %%B IN ('GDISK32.EXE %%D /RAW') DO (
    IF /I "%%B"=="MBR" (
      FOR /F "TOKENS=1,3,7 DELIMS= " %%I IN ('GDISK32.EXE %%D /STATUS') DO (
        IF /I "%%J"=="A" (
          ECHO 硬盘:%%D  主引导记录类型为:%%B  激活主分区盘符为:%%I  系统文件格式为:%%K
        )
      )
    )
  )
) && @ECHO. && GDISK32.EXE %%D /STATUS && @ECHO.

@PAUSE




不知道哪位大大能提供更好的第三方工具?
回复

使用道具 举报

22#
发表于 2010-12-3 08:55:08 | 只看该作者
GDISK32 有参数使用说明书/手册的吗?

要是可以不显示比如Volume label就好了...

MBRWiz这个的系统格式在前面的,或者有用吧...

[ 本帖最后由 andos 于 2010-12-3 09:05 编辑 ]

2010-12-03_090215.png (4.17 KB, 下载次数: 83)

2010-12-03_090215.png
回复

使用道具 举报

23#
 楼主| 发表于 2010-12-3 09:13:00 | 只看该作者

回复 #26 andos 的帖子

你的截图也是GDISK32出来的?

怎么看都找不到出这样的参数呀,你下的命令是什么?
回复

使用道具 举报

24#
发表于 2010-12-3 09:14:18 | 只看该作者
原帖由 0cat0 于 2010-12-3 09:13 发表
你的截图也是GDISK32出来的?

怎么看都找不到出这样的参数呀,你下的命令是什么?


图是MBRWiz /LIST出来的,用MBRWiz.exe /LIST 列出来的
http://mbrwizard.com/
回复

使用道具 举报

25#
 楼主| 发表于 2010-12-3 09:19:49 | 只看该作者

回复 #28 andos 的帖子

多谢提供,先下载回来试试,呵呵。。。
回复

使用道具 举报

26#
 楼主| 发表于 2010-12-3 09:38:31 | 只看该作者

回复 #28 andos 的帖子

就算是用这个还有个大的问题不知道怎么解决?

如何判断MBR是NT52的还是NT60的???
回复

使用道具 举报

27#
 楼主| 发表于 2010-12-3 21:15:18 | 只看该作者
MBRWiz的也差不多可以用了,效果还不错,现在的大问题就是怎么判断MBR为NT52还是NT60了,不知道哪位大能提供一下线索?

  1. @ECHO OFF
  2. @CD /D "%~DP0"
  3. FOR /F "USEBACKQ EOL=- TOKENS=1,2 DELIMS= " %%Y IN (`MBRWiz.EXE /LIST`) DO (
  4.   IF /I "%%Y"=="DISK:" (SET /A DISKNUMBER=%%Z+1)
  5. )
  6. @ECHO 当前一共有:%DISKNUMBER% 个硬盘 && @ECHO.
  7. FOR /F "USEBACKQ EOL=- TOKENS=1,2,4 DELIMS= " %%X IN (`MBRWiz.EXE /LIST`) DO (
  8.   IF /I "%%X"=="DISK:" (SET /A DISKNUMBER=%%Y+1) && (
  9.     @MBRWiz.EXE /DISK=%%Y /LIST>"\\?\%TEMP%\DISK[%%Y].TXT"
  10.     FOR /F "USEBACKQ EOL=- TOKENS=3,5,6,9 DELIMS= " %%A IN ("\\?\%TEMP%\DISK[%%Y].TXT") DO (
  11.      IF /I "%%B"=="YES" (
  12.        IF /I "%%D"=="<NONE>" (
  13.          @ECHO 仅硬盘[%%Y]存在激活主分区[无盘符],分区格式[%%A],隐藏标志[%%C],MBR/GPT[%%Z]
  14.        ) ELSE (
  15.          @ECHO 仅硬盘[%%Y]存在激活主分区[%%D],分区格式[%%A],隐藏标志[%%C],MBR/GPT[%%Z]
  16.        )
  17.        @ECHO.
  18.       )
  19.     )
  20.   )
  21. )
  22. @MBRWiz.EXE /DISK /LIST
  23. @DEL /F /A /Q "\\?\%TEMP%\DISK[*].TXT" >NUL
  24. @PAUSE
复制代码

2010-12-03_211221.png (36.08 KB, 下载次数: 93)

2010-12-03_211221.png
回复

使用道具 举报

28#
发表于 2010-12-3 22:26:49 | 只看该作者
原帖由 0cat0 于 2010-12-3 21:15 发表
MBRWiz的也差不多可以用了,效果还不错,现在的大问题就是怎么判断MBR为NT52还是NT60了,不知道哪位大能提供一下线索?

@ECHO OFF
@CD /D "%~DP0"
FOR /F "USEBACKQ EOL=- TOKENS=1,2 DELIMS= " %%Y IN (` ...


Windows版本行不?

比如6.0, 6.1, 6.2就NT6,但要找指定的区好像也不易...
P.S. 图中那个[NT5]是我想测试看看,但是失败了的,只是当前系统而已..



貌似如果有两个主分区就会出现两次"仅硬盘x存在激活...."...所以"仅"应该去掉吧,或者再优化一下...


[ 本帖最后由 andos 于 2010-12-4 07:11 编辑 ]
回复

使用道具 举报

29#
 楼主| 发表于 2010-12-4 12:29:02 | 只看该作者

回复 #32 andos 的帖子

正常来说,普通用户都是单硬盘,单激活主分区的,如果像我们这种“专业人士”为了测试或为了用多系统才会弄出很多不一样的东西,此CMD只是一个示例,怎么改都无所谓,其实如果正常的系统,判断NT52或NT60,只要找一下活动主分区里面有没有BCD或bootmgr就可以判定是NT60的,但这种做法是很主观的,因为有很多情况是就算是有这些文件,也很有可能这些文件都只是摆设,所以等只能找到如何真正判断出NT52或NT60的方法才能进一步深入。。。


我早就为了这步发了另外一贴,可至今仍未有回应,有点郁闷。。。
回复

使用道具 举报

30#
 楼主| 发表于 2010-12-4 12:32:05 | 只看该作者

回复 #33 2010qazber 的帖子

不知道DISKPART命令有没有判定MBR类别的方法?

我找了许久了,根本没找到方法。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-29 20:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表