无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 14462|回复: 85
打印 上一主题 下一主题

又一个 diskpart 硬盘分区信息搜集脚本,玩具。

    [复制链接]
跳转到指定楼层
#
发表于 2022-9-1 18:54:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 dos时代菜鸟 于 2022-9-5 10:43 编辑

此脚本 仅仅就 通过 获取分区 offset 数据来 计算出 各个 卷 与 分区 间的 关联,用以尝试规避 已存在的 一些 Diskpart 在此方面的 bug .
脚本思路 仅做 参考 ,不打算 做 长期研究 和更新。

请在 win7 及以上 简体中文版本系统运行。
带 debug 参数,可以显示 一些细节。

把结果 传递给文件x.txt 同时附带 Debug 信息。
  1. echo 0|parts6.44-select.cmd debug>x.txt
复制代码


把只包含硬盘分区列表的信息 存入 z.txt
  1. (for /f "skip=23 delims=" %c in ('parts6.44-select.cmd debug2') do @(echo %c))>z.txt
复制代码

diskpart硬盘与分区列表应用举例 parts6.49-.cmd.zip (6.24 KB, 下载次数: 61)

死循环播放 硬盘及其分区 信息 parts6.492-screen.cmd.zip (6.39 KB, 下载次数: 31)









评分

参与人数 7无忧币 +35 收起 理由
Allreal + 5
纯脆entropy + 5 赞一个!
wybuct + 5 很给力!
928274096 + 5 赞一个!
wuxin9712 + 5
chishingchan + 5 赞一个!
freesoft00 + 5

查看全部评分

61#
发表于 2023-3-2 12:09:46 | 只看该作者
谢谢分享
回复

使用道具 举报

60#
发表于 2023-2-21 19:32:16 | 只看该作者
谢谢分享
回复

使用道具 举报

59#
 楼主| 发表于 2023-2-21 19:15:57 | 只看该作者
nttwqz 发表于 2023-2-21 18:31
我看了一下,获取分区字节偏移的方法有两种set vol #/det part;sel disk #/sel part #/det part,也就是 ...

回复

使用道具 举报

58#
发表于 2023-2-21 18:48:21 | 只看该作者
谢谢分享
回复

使用道具 举报

57#
发表于 2023-2-21 18:31:12 来自手机 | 只看该作者
dos时代菜鸟 发表于 2023-2-21 08:59
如果 以分区 offset 代替分区号作为分区索引,把分区的 offset 与 卷号做对应关系。或许能 规避问题。

我看了一下,获取分区字节偏移的方法有两种set vol #/det part;sel disk #/sel part #/det part,也就是说无论操作卷还是分区,最后都需要det part。就目前来说,list vol获取卷号等信息,再set vol #/det part获取的信息也都是正确的,只有无法获取的情况,暂时没有遇到返回错误信息的情况,比如返回的分区编号错误,也就是说,凡是能返回属性信息的,分区编号和卷号以及字节偏移等也是正确的,此时并不需要根据字节偏移等分析卷与分区的对应关系。如果操作卷无法获取分区属性,自然也没有字节偏移等信息,就不知道这个卷对应哪个分区,此时一般通过操作分区来获取分区属性获得对应卷号、字节偏移等信息,如果此时获取的信息也是正确的,直接将结果赋值给相关卷变量即可,不需要根据字节偏移建立卷和分区的对应关系;如果是错误的,你怎么根据字节偏移分析获得卷和分区的对应关系?即使分析各个分区的字节偏移大小得出分区结构,但是又如何算出这个错误的分区卷号?

根据以前的经验,sel disk #/det disk和sel disk #/sel part #/det part获取的磁盘卷卷列表和每个分区对应的卷信息错误较多,特别是分区有属性的情况很容易出错。 所以目前的方法是通过list vol获取卷号及文件系统等信息,在通过获取的卷号列表获取卷属性和分区属性,这样卷号对应的磁盘和分区就有了,最后转换成磁盘分区相关变量。由于并非所有分区都有卷号,所以还需要sel disk #/sel part #/det part,前面获取不到分区属性的也在这里补上,已有的忽略,这样就规避了操作磁盘和磁盘分区获取信息的诸多错误。如果顺利,dpinfo新的测试版将于近期发布!
回复

使用道具 举报

56#
发表于 2023-2-21 14:41:34 来自手机 | 只看该作者
本帖最后由 oluolio 于 2024-1-14 23:53 编辑

.
回复

使用道具 举报

55#
 楼主| 发表于 2023-2-21 08:59:05 | 只看该作者
nttwqz 发表于 2023-2-19 11:47
我怀疑巨硬都没有认真测试过,虽说8.1之后取消了测试团队,但是有的bug从7到现在都一直存在,看来世界上 ...

如果 以分区 offset 代替分区号作为分区索引,把分区的 offset 与 卷号做对应关系。或许能 规避问题。
回复

使用道具 举报

54#
发表于 2023-2-19 11:47:16 来自手机 | 只看该作者
dos时代菜鸟 发表于 2023-2-19 10:24
可以理解为diskpart依托的众多文件的内部函数句柄对同一个事物的理解不一致。导致分区与卷对应关系出现偏 ...

我怀疑巨硬都没有认真测试过,虽说8.1之后取消了测试团队,但是有的bug从7到现在都一直存在,看来世界上使用这个工具的人较少,或者只使用简单功能,无人反馈,以至于这么多bug一直留存到今天……
回复

使用道具 举报

53#
 楼主| 发表于 2023-2-19 10:24:26 来自手机 | 只看该作者
nttwqz 发表于 2023-2-19 00:38
我看,你这个所谓的“尝试通过 字节偏移 找到分区对应的卷信息”只不过是磁盘信息和卷信息的变量转换。

...

可以理解为diskpart依托的众多文件的内部函数句柄对同一个事物的理解不一致。导致分区与卷对应关系出现偏差。
回复

使用道具 举报

52#
 楼主| 发表于 2023-2-19 07:14:14 来自手机 | 只看该作者
nttwqz 发表于 2023-2-19 00:38
我看,你这个所谓的“尝试通过 字节偏移 找到分区对应的卷信息”只不过是磁盘信息和卷信息的变量转换。

...

多谢
回复

使用道具 举报

51#
发表于 2023-2-19 00:38:47 | 只看该作者
我看,你这个所谓的“尝试通过 字节偏移 找到分区对应的卷信息”只不过是磁盘信息和卷信息的变量转换。
  1. sel vol #/det part/det vol
  2. sel disk #/sel part #/det part
复制代码

后者部分使用了前者卷获得的信息,这和我多年来使用的方法基本相同,也想不到什么好办法,操作卷获取的信息正确,操作磁盘分区获取的信息错误,就用前者正确替换后者的错误,反之亦然。

很遗憾,通过卷获取的卷和分区信息也不一定是正确的,由于这个原因我的dpinfo更新已经搁置好几个月了,我尝试了同时操作磁盘分区获取分区和卷信息、操作卷获取获取分区和卷信息,最后对比再bug修复,这种方法对效率影响不小;还尝试了操作卷获取获取分区和卷信息,操作磁盘分区获取分区信息(忽略卷信息以规避一些bug),最后将卷获取的磁盘分区信息转换成与之对应的磁盘分区信息,再修复剩下的bug,这种方法效率比前面好了不少,比之前已发布版本使用的操作磁盘分区获取为主,个别卷为辅的方法还是慢了10%。


之前改来改去没空看这个脚本,核心代码应该就是这几行。另外,69行少了一个双引号
  1. if "%%c"=="字节偏移" (
  2.     set "off=                      %%d"
  3.     for %%h in (!vols_off!) do (
  4.         for /f "tokens=1,2,3 delims=." %%r  in ("%%h") do (
  5.             if "%%d"=="%%t" (if !disk! equ %%s (
  6.                 set vol_info=!vol%%r!
  7.                 set "free=!vol_%%r_free!"
  8.                 set online=!vol_%%r_online!
  9.                 set rw=!vol_%%r_rw!
  10.                 set /a vn+=1
  11.             ))
  12.         )
  13.     )
  14. )
复制代码


diskpart [sel vol #/det part/det vol] 已知 bug,欢迎补充:
动态磁盘,sel vol #/det part提示没有选择分区,但sel part #/det part/det vol正常


回复

使用道具 举报

50#
发表于 2023-2-7 20:39:15 | 只看该作者
加入VIP会员,获无忧币,赠积分,送勋章,下载无限制,获论坛最高级会员权限 !
回复

使用道具 举报

49#
发表于 2023-2-7 17:26:13 | 只看该作者
dos时代菜鸟 发表于 2023-2-7 11:15
分区软件是么?
给你一个

  一直知道你的名号。没想到这么亲民。
命令行写的比编程软件还好。
回复

使用道具 举报

48#
 楼主| 发表于 2023-2-7 11:15:48 | 只看该作者
Allreal 发表于 2023-2-7 09:31
这玩意真神了。!!!!要不是各种分区软件这么方便。。。。

分区软件是么?
给你一个

DISKPART_SHELL-Ver_1.28.1(x64).7z (959.69 KB, 下载次数: 9)
回复

使用道具 举报

47#
发表于 2023-2-7 10:34:58 | 只看该作者
必须顶一下啊
回复

使用道具 举报

46#
发表于 2023-2-7 09:31:36 | 只看该作者
这玩意真神了。!!!!要不是各种分区软件这么方便。。。。
回复

使用道具 举报

45#
 楼主| 发表于 2023-2-7 08:59:48 | 只看该作者
本帖最后由 dos时代菜鸟 于 2023-2-7 09:04 编辑
610644034 发表于 2023-2-6 18:09
我的是bat,正常系统中可以用,PE中,无PEcmd 也可以用, 你这个图形界面的,依赖PEcmd ,不适合我! 再 ...

你说的对。

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409455&extra=

不知道为啥现在的 批处理都要用 bat 做扩展名。那是 dos 时代批处理扩展名。进入 winXP 时代 后,cmd 下的批处理都用 cmd 做扩展名了,直接由 cmd.exe 解析。
bat 扩展名容易让人以为是 纯dos 下的批处理呢。

批处理做个菜单实现简化命令行操作,简单快捷。但也有一些弊端。我在 2018年时就用 批处理实现了 diskpart 的主要功能操作。但是批处理操作 还是有一些掣肘的地方。
比如:
每实现一个目的,都要调用一次 diskpart
通过diskpart 实现磁盘、分区、卷的三级信息搜集至少需要调用三次 diskpart .

所以我就考虑用 pecmd 给diskpart 做外壳,利用 pecmd 对 cmd 窗口的处理能力,运行一次 diskpart 就足够了,通过程序直接与 diskpart 窗口和diskpart输出的结果做交互处理。同时还可以通过 pecmd 实现硬盘未使用空间的精准定位,通过鼠标点选对这些未使用区域进行分区。通过功能按钮开关设置,一定程度避免误操作和无效操作,比如 Gpt 分区下或者mbr的非主分区,其激活活动分区的功能按钮就关闭了。这些都是 批处理难以完成的。

系统中diskpart功能的实现,需要诸多系统文件支撑,多一个 1M大小的 pecmd.exe 也就无所谓了,而且,还可以把pecmd脚本内置到 pecmd.exe 中,做成单文件,把pecmd 改个名字,就是又一个第三方磁盘分区软件,何乐而不为呢?

智者见智,仁者见仁吧。


回复

使用道具 举报

44#
 楼主| 发表于 2023-2-7 06:47:32 来自手机 | 只看该作者
610644034 发表于 2023-2-6 18:09
我的是bat,正常系统中可以用,PE中,无PEcmd 也可以用, 你这个图形界面的,依赖PEcmd ,不适合我! 再 ...

美哉美哉。你说的对。
回复

使用道具 举报

43#
发表于 2023-2-6 18:09:49 | 只看该作者
本帖最后由 610644034 于 2023-2-6 18:14 编辑
dos时代菜鸟 发表于 2023-2-6 15:20
呵呵哈。

图形界面的 diskpart 了解下

我的是bat,正常系统中可以用,PE中,无PEcmd 也可以用, 你这个图形界面的,依赖PEcmd ,不适合我! 再说了,离开pecmd ,同样可以用hta 做一个差不多的图形界面!所以如果离开bat,我首先会考虑 hta 基于diskpart 做个同样的工具,岂不美哉!

点评

你说的对。 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=409455&extra= 不知道为啥现在的 批处理都要用 bat 做扩展名。那是 dos 时代批处理扩展名。进入 winXP 时代 后,cmd 下的批处理都用 cmd 做扩  详情 回复 发表于 2023-2-7 08:59
美哉美哉。你说的对。  详情 回复 发表于 2023-2-7 06:47
回复

使用道具 举报

42#
发表于 2023-2-6 17:59:02 | 只看该作者
好像不错 谢谢
回复

使用道具 举报

41#
 楼主| 发表于 2023-2-6 15:20:39 | 只看该作者
610644034 发表于 2023-2-6 12:48
一直用自己感觉不错的脚本!没有见到更合意的!

呵呵哈。

图形界面的 diskpart 了解下

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D2
回复

使用道具 举报

40#
发表于 2023-2-6 12:48:22 | 只看该作者
一直用自己感觉不错的脚本!没有见到更合意的!


DiskPart 磁盘管理工具_备份.bat.txt

83.22 KB, 下载次数: 16

点评

呵呵哈。 图形界面的 diskpart 了解下 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=413760&extra=page%3D2  详情 回复 发表于 2023-2-6 15:20
回复

使用道具 举报

39#
发表于 2023-2-6 08:18:31 | 只看该作者
感谢分享
回复

使用道具 举报

38#
发表于 2022-12-15 20:41:39 | 只看该作者
感谢分享
回复

使用道具 举报

37#
发表于 2022-12-11 21:02:54 | 只看该作者
谢谢分享
回复

使用道具 举报

36#
发表于 2022-12-1 18:28:37 | 只看该作者
谢谢分享
回复

使用道具 举报

35#
发表于 2022-11-29 10:53:56 | 只看该作者
感谢分享
回复

使用道具 举报

34#
发表于 2022-10-23 09:55:36 | 只看该作者
给力给力
回复

使用道具 举报

33#
发表于 2022-10-17 19:41:02 | 只看该作者
多谢分享,收藏备用。
回复

使用道具 举报

32#
发表于 2022-10-14 19:11:30 | 只看该作者
666
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-3 00:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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