无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
12
返回列表 发新帖
楼主: 0cat0
打印 上一主题 下一主题

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

[复制链接]
31#
发表于 2010-12-4 13:10:26 | 只看该作者
这是chenall大侠的一点代码,不知是否有帮助

#检测NT5.X和nt6.x,并设为默认启动项,NT6.X优先启动。
WENV run find --set-root --ignore-cd --ignore-floppies /${WinDir}/system32/ntoskrnl.exe cat --locate=\0\x35\0\x2E /${WinDir}/system32/version.dll && write 0x60100 1 && default 0
WENV run find --set-root --ignore-cd --ignore-floppies /${WinDir}/system32/winload.exe && write 0x60100 2 && default 1



Bootice的作者Pauly 大侠应该有办法,在他的工具上有当前主引导记录的类型,

我真想看到楼主的成品出世
回复

使用道具 举报

32#
 楼主| 发表于 2010-12-4 13:27:25 | 只看该作者

回复 #36 ggmm888 的帖子

多谢提供,不过这些没用,这些只是检测是否有NT60的系统文件,如果就算有,但也是只摆设的话,上面的检测就没用了,根本无法知道MBR是哪种,P大应该有办法的,不过不知道通过CMD能否实现。。。


还有,想看成品的大概没办法了,呵呵,因为这个如果有办法的话,我会加到这个里面的:

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=163278&extra=page%3D1

因为里面有个修改MBR为NT60的地方,如果能自动检测,那就安全和方便得多了,呵呵,现在那个要手动选激活主分区的,判断是否为NT60的话也只是简单找一下BCD,如果没有就直接把MBR修改为NT60并复制必要的引导文件和添加启动菜单的。。。

[ 本帖最后由 0cat0 于 2010-12-4 13:40 编辑 ]
回复

使用道具 举报

33#
发表于 2010-12-4 13:36:10 | 只看该作者
原帖由 0cat0 于 2010-12-4 13:27 发表
多谢提供,不过这些没用,这些只是检测是否有NT60的系统文件,如果就算有,但也是只摆设的话,上面的检测就没用了,根本无法知道MBR是哪种,P大应该有办法的,不过不知道通过CMD能否实现。。。

其实应该是检测比如Version.dll, explorer.exe 这些文件的版本
从版本来判断是NT多少
比6.0,6.1,6.2就是NT6
5.0,5.1,5.2就是NT5

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

使用道具 举报

34#
 楼主| 发表于 2010-12-4 13:51:39 | 只看该作者

回复 #38 andos 的帖子

这种方法其实也是很主观的,因为硬盘里面的文件很有可能只是摆设,比如:一个很简单的双系统(比如XP和WIN7),本身就带有两种版本的文件,只是引导文件为高版本的(比如为NT60的),但实际上很可能在主引导分区上面的文件是XP的,那检测Version.dll, explorer.exe这些文件出来的结果就是NT52的,这样的结果就很难判断得准确了。。。
回复

使用道具 举报

35#
发表于 2010-12-4 17:17:35 | 只看该作者
用debug读cmos端口应该可以得到,方法自己想吧。
回复

使用道具 举报

36#
 楼主| 发表于 2010-12-4 17:59:01 | 只看该作者
在没有找到认识MBR的方法之前,最终代码就这样了,还是有一点用的。。。

  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=1,3,5,6,9 DELIMS= " %%A IN ("\\?\%TEMP%\DISK[%%Y].TXT") DO (
  11.      IF /I "%%C"=="YES" (
  12.        IF /I "%%E"=="<NONE>" (
  13.          @ECHO 硬盘[%%Y],[%%Y:%%A]为激活主分区[无盘符],格式[%%B],隐藏标志[%%D],MBR/GPT[%%Z]
  14.        ) ELSE (
  15.          @ECHO 硬盘[%%Y],[%%Y:%%A]为激活主分区[%%E],格式[%%B],隐藏标志[%%D],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-04_175851.png (36.21 KB, 下载次数: 75)

2010-12-04_175851.png
回复

使用道具 举报

37#
发表于 2010-12-6 10:35:28 | 只看该作者
mbr不管是NT5,还是NT6,主要是搜索主分区功能,判断是否是是NT5,还是NT6可以通过对比标准的MBR的其中一部分来判断,对比那个地方就看楼主的意思了。

个人认为判断主分区的第一个512字节是可行的,比较准确,因为里面的bootmgr或者是ntldr。

具体写法,还要看楼主了,我写不了只是做为一个提示,这比看文件准确和科学的多。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-29 12:13

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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