无忧启动论坛

 找回密码
 注册
搜索

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

查看数: 58860 | 评论数: 160 | 收藏 26
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 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, 下载次数: 3, 下载积分: 无忧币 -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, 下载次数: 2)



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
复制代码



点评

看了下之前的回复,上次研究此bug已经是差不多一年半以前的事情了,我也记不太清除当初为何才用了这种信息对比排除法,感觉代码写多了有时候想法会陷入误区,无法达到当局者也清的境界。 根据之前的记载及刚刚的  详情 回复 发表于 2022-9-1 01:49
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, 2024-6-9 06:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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