无忧启动论坛

 找回密码
 注册
搜索

dpinfo 2.6.5 beta2 磁盘分区信息 分区相关工具定制脚本

查看数: 71138 | 评论数: 160 | 收藏 27
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-6-13 01:47

正文摘要:

本帖最后由 nttwqz 于 2023-7-19 23:21 编辑 其它地址 https://sourceforge.net/projects/dpinfo/

回复

nttwqz 发表于 2023-2-21 23:29:37
本帖最后由 nttwqz 于 2023-2-21 23:55 编辑

测试版更新日志
尝试规避或修复diskpart本身的bug引起的bug

由于diskpart脚本行数的增加等原因效率比2.6.4下降了大约15%



hehuiying 发表于 2024-3-16 06:12:34
谢谢分享
xiaoclover 发表于 2023-3-29 19:15:38
学习一下
luoshui336 发表于 2023-3-29 19:04:52
顶顶
ycl7562834 发表于 2023-3-16 18:20:58
支持大佬
conlin888 发表于 2023-3-15 21:49:33
支持大大更新
nttwqz 发表于 2023-3-15 21:40:29
更新一下,继续完善修复因diskpart自身bug引起的bug
p1509101 发表于 2023-3-4 12:05:26
感谢分享
610644034 发表于 2023-3-3 20:43:53


还是自己打造的工具用起来习惯,一般也不用坐轮椅! 在这里也分享给大家。(bat 文件)

DiskPart 磁盘管理工具.bat.txt

83.24 KB, 下载次数: 9, 下载积分: 无忧币 -2

ycl7562834 发表于 2023-3-2 17:04:41
初学CMD  希望大佬能够指点
p1509101 发表于 2023-2-21 23:53:33
感谢分享 很实用
sn4735 发表于 2023-1-13 19:54:49
这么多的代码,楼主辛苦了,感谢分享
dos时代菜鸟 发表于 2022-9-1 13:06:17
本帖最后由 dos时代菜鸟 于 2022-9-1 13:22 编辑
nttwqz 发表于 2022-9-1 01:49
看了下之前的回复,上次研究此bug已经是差不多一年半以前的事情了,我也记不太清除当初为何才用了这种信 ...

搞了一个 通过 分区 字节偏移量 来定位 分区 与 卷 对应关系的 脚本。不知道 能不能规避 一些bug .
parts6.7z (1.98 KB, 下载次数: 7)



nttwqz 发表于 2022-9-1 08:36:23
论坛又把贴子后半部分吃掉了
nttwqz 发表于 2022-9-1 01:49:07
dos时代菜鸟 发表于 2022-8-31 22:40
对于 diskpart bug ,确定 分区 与 卷 对应关系上,
能否考虑 通过下面命令, 获取 字节偏移
,配合 下 ...

看了下之前的回复,上次研究此bug已经是差不多一年半以前的事情了,我也记不太清除当初为何才用了这种信息对比排除法,感觉代码写多了有时候想法会陷入误区,无法达到当局者也清的境界。

根据之前的记载及刚刚的测试,det disk/list vol获取的卷号的确是正确的,sel part/det part获取的卷号是错误的。既然如此,以det disk/list vol获取的正确卷号通过sel vol/det vol /det part就能获取对应的磁盘与分区的关系,这样依然能获取卷对应的磁盘分区,磁盘的卷列表,这样就跳过这个卷号错误的bug了。

不过呢,选择卷和选择分区获取信息都有bug,我记得有的选择卷获取不到分区信息,有的选择分区获取不到卷信息

刚刚又试了一下,目前发现det disk/list vol获取的卷号还是比较准确的,sel part/det part的bug远不止卷号错误这么简单,目前发现的bug可能只是冰山一角,有属性的都容易出错,下面这种情形连卷号都获取不到了(这也导致了2.6.4中该卷号无法获取的bug),但是选择卷获取正常。diskpart真是从让人从研究到放弃,这bug何其多啊,让人产生一种用编程语言重写的冲动,可惜我不会……

我在考虑,要不要从第一步list vol获取卷号及卷部分信息,det disk获取磁盘所属卷信息,改成将获取的磁盘卷号通过sel vol/det vol/det part获取信息来规避卷号错误bug,不过不知道用的多了会不会发现新的bug。

8.1系统
  1. DISKPART> det disk

  2. Microsoft Virtual Disk
  3. 磁盘 ID: {F728F485-3491-4096-AC8A-F1DD4A3682E1}
  4. 类型   : 虚拟备份的文件
  5. 状态 : 联机
  6. 路径   : 0
  7. 目标 : 0
  8. LUN ID : 2
  9. 位置路径 : UNAVAILABLE
  10. 当前只读状态: 否
  11. 只读: 否
  12. 启动磁盘: 否
  13. 页面文件磁盘: 否
  14. 休眠文件磁盘: 否
  15. 故障转储磁盘: 否
  16. 群集磁盘  : 否

  17.   卷 ###      LTR  标签         FS     类型        大小     状态       信息
  18.   ----------  ---  -----------  -----  ----------  -------  ---------  --------
  19.   卷     8                      RAW    磁盘分区        2048 MB  正常         已隐藏
  20.   卷     9                      NTFS   磁盘分区          28 GB  正常
  21.   卷     10                     RAW    磁盘分区         100 MB  正常         已隐藏
  22.   卷     11                     NTFS   磁盘分区        1024 MB  正常         已隐藏

  23. DISKPART> list part

  24.   分区 ###       类型              大小     偏移量
  25.   -------------  ----------------  -------  -------
  26.   分区      1    保留                 128 MB    17 KB
  27.   分区      2    系统                 100 MB   129 MB
  28.   分区      3    恢复                1024 MB   229 MB
  29.   分区      4    主要                2048 MB  1253 MB
  30.   分区      5    主要                  28 GB  3301 MB

  31. DISKPART> sel part 4

  32. 分区 4 现在是所选分区。

  33. DISKPART> det vol

  34. 没有选择卷。
  35. 请选择一个卷,再试一次。

  36. DISKPART> det part

  37. 分区 4
  38. 类型    : ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
  39. 隐藏  : 是
  40. 必需: 是
  41. 属性  : 0XF000000000000001
  42. 字节偏移: 1313865728

  43. 没有跟这个分区相关联的卷。

  44. <blockquote>DISKPART> sel vol 8
复制代码


点评

搞了一个 通过 分区 字节偏移量 来定位 分区 与 卷 对应关系的 脚本。不知道 能不能规避 一些bug . [attachimg]506764[/attachimg]  详情 回复 发表于 2022-9-1 13:06
dos时代菜鸟 发表于 2022-8-31 22:40:07
对于 diskpart bug ,确定 分区 与 卷 对应关系上,
能否考虑 通过下面命令, 获取 字节偏移
  1. select vol 卷号
  2. detail part
复制代码

,配合 下面命令 ,来精准找出 对应关系?
  1. sele disk 盘号
  2. select part 分区号
  3. detail part
复制代码



nttwqz 发表于 2022-8-31 22:23:42
时隔将近一年,再次更新一下
f2021z 发表于 2021-6-25 08:25:44
大师就是牛.......
cchessy 发表于 2021-5-6 15:46:49
谢谢分享!
2011slkj 发表于 2021-4-23 20:09:27
谢谢分享
szwp 发表于 2021-4-12 18:13:49
脚本修改后可以显示了。
szwp 发表于 2021-4-12 18:09:24
nttwqz 发表于 2021-4-12 17:43
之前用Win7测试的时候发现其不能显示硬盘型号,所以添加限制以防出错,刚测试发现Win7不行,Win7 SP1可 ...

DiskPart 版本 6.1.7601
WIN7 32位,打过SP1

型号未显示。
nttwqz 发表于 2021-4-12 17:48:27
szwp 发表于 2021-4-12 16:18
不知道为啥有台电脑的硬盘型号没显示出来。

磁盘管理中保留2位小数,所以大于0.005G=5.12MB就有零头 ...

刚研究了下偏移量字节值相减对比分区大小差距,有的相同,有的差几M,有的差几K,有的甚至差1G,看来这个不太准确,也或许需要其它计算方法。
nttwqz 发表于 2021-4-12 17:43:34
本帖最后由 nttwqz 于 2021-4-12 17:50 编辑
szwp 发表于 2021-4-12 16:18
不知道为啥有台电脑的硬盘型号没显示出来。

磁盘管理中保留2位小数,所以大于0.005G=5.12MB就有零头 ...


之前用Win7测试的时候发现其不能显示硬盘型号,所以添加限制以防出错,刚测试发现Win7不行,Win7 SP1可以,也就是7601可以。

所以需要改变系统版本号判断如下

  1. for /f "tokens=2 delims=[]" %%Q in ('ver') do for /f "tokens=2-4 delims=. " %%R in ("%%Q") do set "ver=%%R%%S"&set "verbuild=%%T"
复制代码


并将搜索到的第一个name行if %ver% gtr 61 if not defined dk_!dn!_name开头的if %ver% gtr 61改成if %ver% gtr 60 if %verbuild% gtr 7600

简单试了下,删除版本限制也并没有获取到错误的值

点评

DiskPart 版本 6.1.7601 WIN7 32位,打过SP1 型号未显示。  详情 回复 发表于 2021-4-12 18:09
szwp 发表于 2021-4-12 16:18:57


不知道为啥有台电脑的硬盘型号没显示出来。

磁盘管理中保留2位小数,所以大于0.005G=5.12MB就有零头.01显示,而硬盘容量只到MB话,还是有可能会有不到0.5MB零头,安全的无零头显示还是+4以内。如果以shrink方式的话,+5也是安全的,下次试试,不过怕会影响分区序号,以前增删后序号有变化引起多引导的错误。


点评

刚研究了下偏移量字节值相减对比分区大小差距,有的相同,有的差几M,有的差几K,有的甚至差1G,看来这个不太准确,也或许需要其它计算方法。  详情 回复 发表于 2021-4-12 17:48
之前用Win7测试的时候发现其不能显示硬盘型号,所以添加限制以防出错,刚测试发现Win7不行,Win7 SP1可以,也就是7601可以。 所以需要改变系统版本号判断如下 并将搜索到的第一个name行if %ver% gtr 61 if  详情 回复 发表于 2021-4-12 17:43
nttwqz 发表于 2021-4-12 11:37:31
本帖最后由 nttwqz 于 2021-4-12 12:40 编辑
szwp 发表于 2021-4-12 11:24
硬盘管理里显示的分区单位通常是G,有2位小数,误差在5兆内才会显示.00。有点强迫症吧,所以经常要在脚本 ...


一般整数MB+8就好,比如307208就显示整数300G,102408就显示整数100GB

有整数分区计算器,可以搜搜,下面就是一个

https://www.iplaysoft.com/tools/partition-calculator/
szwp 发表于 2021-4-12 11:24:03
nttwqz 发表于 2021-4-12 11:07
全新一键分区不用知道具体MB,都是现成方案直接创建

硬盘管理里显示的分区单位通常是G,有2位小数,误差在5兆内才会显示.00。有点强迫症吧,所以经常要在脚本里调整下数字。

点评

一般整数MB+8就好,比如307205就显示整数300G,102408就显示整数100GB  详情 回复 发表于 2021-4-12 11:37
nttwqz 发表于 2021-4-12 11:07:29
本帖最后由 nttwqz 于 2021-4-12 11:09 编辑
szwp 发表于 2021-4-12 11:00
最近发现同一批次的盘容量也有几十兆的差距。diskpart对于显示单位好像是自动根据容量来显示成GB、MB、KB, ...


全新一键分区不用知道具体MB,都是现成方案直接创建

点评

硬盘管理里显示的分区单位通常是G,有2位小数,误差在5兆内才会显示.00。有点强迫症吧,所以经常要在脚本里调整下数字。  详情 回复 发表于 2021-4-12 11:24
szwp 发表于 2021-4-12 11:00:34
最近发现同一批次的盘容量也有几十兆的差距。diskpart对于显示单位好像是自动根据容量来显示成GB、MB、KB,或许先分一次区,看剩余可用能精确些,在磁盘管理的磁盘属性-卷里显示的容量是MB。俺再看看有没其它方式获取磁盘的总扇区数。

点评

全新一键分区不同知道具体MB,都是现成方案直接创建  详情 回复 发表于 2021-4-12 11:07

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

闽公网安备 35020302032614号

GMT+8, 2025-4-17 06:59

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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