无忧启动论坛

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

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

    [复制链接]
跳转到指定楼层
1#
发表于 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

查看全部评分

2#
 楼主| 发表于 2022-9-1 18:59:56 | 只看该作者
本帖最后由 dos时代菜鸟 于 2022-9-3 18:08 编辑

欢迎广泛测试 ,
脚本代码 公开。
欢迎 修缮。

parts6.49-.cmd.zip (6.24 KB, 下载次数: 12)

parts6.41.cmd.zip (3.15 KB, 下载次数: 8)   初步解决 部分中英文 显示站位不同(卷标) 导致 里出外进 问题

parts6.4.cmd.7z (2.56 KB, 下载次数: 12)

各版本暂存区。

点评

600多行脚本啊,算巨著了,学习了!  发表于 2023-8-13 13:43

评分

参与人数 1无忧币 +5 收起 理由
pda8888 + 5 赞一个!

查看全部评分

回复

使用道具 举报

3#
 楼主| 发表于 2022-9-1 19:40:29 | 只看该作者
本帖最后由 dos时代菜鸟 于 2022-9-1 19:42 编辑

调用了 4 次 diskpart

用到 管道 传递 diskpart 指令,通过 对输出结果中 "DISKPART>"的个数 ,判断 输出的信息是 哪一个 指令的运行结果,进而 有针对性的 分析文本流。
回复

使用道具 举报

4#
发表于 2022-9-1 20:43:52 | 只看该作者

建议
1、格式缩小空格!CMD窗口看不完,要向右滚动;
2、有点格式对不齐;
3、将英文译为中文。

点评

暂时,先不考虑美观的事儿, 这个算法是否可行还说不准呢。  详情 回复 发表于 2022-9-1 22:56
如果 只是 为了 观赏,就失去 脚本的意义了。 而且 中文字符 实际占用两个字符位,而 win 下是按照一个字符计算的,所以 有中文的行,就会有错位, 需要单独编辑 脚本 通过比较大小的方式 对文本行逐一字符进行  详情 回复 发表于 2022-9-1 21:31
cmd窗口不太好对齐,cmd窗口就那么大,例如卷标,有些长有些短这样就会不齐  详情 回复 发表于 2022-9-1 21:08
回复

使用道具 举报

5#
发表于 2022-9-1 20:45:43 | 只看该作者
值得称赞的是没有使用额外文件!例如:>filename.txt
回复

使用道具 举报

6#
发表于 2022-9-1 20:50:41 | 只看该作者
谢谢分享
回复

使用道具 举报

7#
发表于 2022-9-1 21:08:17 | 只看该作者
chishingchan 发表于 2022-9-1 20:43
建议
1、格式缩小空格!CMD窗口看不完,要向右滚动;
2、有点格式对不齐;

cmd窗口不太好对齐,cmd窗口就那么大,例如卷标,有些长有些短这样就会不齐
回复

使用道具 举报

8#
 楼主| 发表于 2022-9-1 21:25:30 | 只看该作者
cmd 下运行:
  1.     (echo.&echo.)|parts6.3.cmd debug>x.txt
复制代码
就会把结果 传递给文件x.txt 同时附带 Debug 信息。


回复

使用道具 举报

9#
 楼主| 发表于 2022-9-1 21:31:17 | 只看该作者
本帖最后由 dos时代菜鸟 于 2022-9-1 21:40 编辑
chishingchan 发表于 2022-9-1 20:43
建议
1、格式缩小空格!CMD窗口看不完,要向右滚动;
2、有点格式对不齐;

如果 只是 为了 观赏,就失去 脚本的意义了。

而且 中文字符 实际占用两个字符位,而 win 下是按照一个字符计算的,所以 有中文的行,就会有错位,
需要单独编辑 脚本 通过比较大小的方式 对文本行逐一字符进行比较,确认哪些信息存在中文,可能造成错位,然后,把其他没有中文的信息 加长处理。

如果是 把这个 列表结果用于 其他脚本调用,是否美观 意义不大,能识别调用就行了,关键是 方便其他脚本调用,兼顾人眼识别方便即可。

分区 id 是考虑 gpt 格式下 分区 有 36个字符,所以 mbr 分区 的id 才会有 一些空格。


这个脚本 ,讨论的主要是算法上的事,就是 针对 diskpart 一些 已知的bug ,对卷运行 detail part 来获取卷的 字节偏移 ,进而 通过对 分区 的 detail part 来 双重确定 卷与分区的 对应关系,规避 bug 可能导致的 分区列表获取错误。


也不知道 可不可行。所以需要 广泛 测试。




回复

使用道具 举报

10#
 楼主| 发表于 2022-9-1 22:56:19 来自手机 | 只看该作者
chishingchan 发表于 2022-9-1 20:43
建议
1、格式缩小空格!CMD窗口看不完,要向右滚动;
2、有点格式对不齐;

暂时,先不考虑美观的事儿,
这个算法是否可行还说不准呢。

点评

太谦虚了。您的代码看上去赏心悦目!  发表于 2023-8-13 13:46
回复

使用道具 举报

11#
 楼主| 发表于 2022-9-2 08:53:17 | 只看该作者
硬盘的gtp特征识别有误,已经纠正了。
回复

使用道具 举报

12#
发表于 2022-9-2 11:56:59 | 只看该作者
谢谢分享
回复

使用道具 举报

13#
 楼主| 发表于 2022-9-2 16:09:47 | 只看该作者
本帖最后由 dos时代菜鸟 于 2022-9-2 16:14 编辑

部分解决显示 站位 错位问题。
解决方法就是 , 计算其中的中文文字个数,把 字符串 按 英文长度 用空格 填充加倍,再把字符串按中文个数缩短。

感觉,这个动作 拖慢了 列表显示时间。


点评

是虚拟磁盘拖慢了速度…  详情 回复 发表于 2022-9-2 17:59
回复

使用道具 举报

14#
发表于 2022-9-2 16:52:23 | 只看该作者
取了X.txt

x局部

点评

设置字体,能容易看一些。  详情 回复 发表于 2022-9-2 17:42
回复

使用道具 举报

15#
 楼主| 发表于 2022-9-2 17:42:26 来自手机 | 只看该作者
dfw9 发表于 2022-9-2 16:52
取了X.txt

x局部

设置字体,能容易看一些。
回复

使用道具 举报

16#
发表于 2022-9-2 17:59:01 来自手机 | 只看该作者
dos时代菜鸟 发表于 2022-9-2 16:09
部分解决显示 站位 错位问题。
解决方法就是 , 计算其中的中文文字个数,把 字符串 按 英文长度 用空格  ...

是虚拟磁盘拖慢了速度…

点评

用 6.4 版,要快一秒多。  详情 回复 发表于 2022-9-2 18:08
回复

使用道具 举报

17#
 楼主| 发表于 2022-9-2 18:08:21 来自手机 | 只看该作者
nttwqz 发表于 2022-9-2 17:59
是虚拟磁盘拖慢了速度…

用 6.4 版,要快一秒多。

点评

我看你想我一样,弄了标签,call调用专门用于计算长度,不过我用的是写入文本文件计算大小再换算的方法,因为英文中的符号数量也是很多的,远不止你批处理中的这点数量,这只不过是很常用的,严格来说不够准确。  详情 回复 发表于 2022-9-2 18:23
回复

使用道具 举报

18#
发表于 2022-9-2 18:23:43 来自手机 | 只看该作者
dos时代菜鸟 发表于 2022-9-2 18:08
用 6.4 版,要快一秒多。

我看你想我一样,弄了标签,call调用专门用于计算长度,不过我用的是写入文本文件计算大小再换算的方法,因为英文中的符号数量也是很多的,远不止你批处理中的这点数量,这只不过是很常用的,严格来说不够准确。

不过呢,我用了“字典”法,打开diskpart的mui文件,尽可能把里面的字词提取出来,并直接赋予长度值,这样除了卷标以外,基本上就不用计算了。因为大量call的调用太影响效率,这种需要多次调用的“函数”,感觉每次都复制粘贴一次代码也不是很合适,也不太方便以后维护。

点评

所以说是初步实现,中文显示位占两个字符计算这个事儿,成了硬伤。 目前看,也只是先这样了。毕竟重点是要其他脚本调取的数据,不是观赏。  详情 回复 发表于 2022-9-2 20:40
回复

使用道具 举报

19#
发表于 2022-9-2 18:31:55 | 只看该作者
貌似不错,收藏了
回复

使用道具 举报

20#
 楼主| 发表于 2022-9-2 20:40:10 来自手机 | 只看该作者
nttwqz 发表于 2022-9-2 18:23
我看你想我一样,弄了标签,call调用专门用于计算长度,不过我用的是写入文本文件计算大小再换算的方法, ...

所以说是初步实现,中文显示位占两个字符计算这个事儿,成了硬伤。
目前看,也只是先这样了。毕竟重点是要其他脚本调取的数据,不是观赏。
回复

使用道具 举报

21#
 楼主| 发表于 2022-9-3 00:23:36 | 只看该作者
本帖最后由 dos时代菜鸟 于 2022-9-3 00:27 编辑

做了个简单的 列表应用 脚本。

选择 序号后,会 根据 所选 判断 选择的是 硬盘 还是分区 或是 卷,然后 运行 diskpart 指令 查看 对应的 信息。

要想把 列表 结果 存入 文件 可以运行

  1. echo 0 | parts6.42-select.cmd debug >x.txt
复制代码
把运行过程 和 debug 信息都 存入 x.txt 文件,如果不带 debug 参数,则 只传递 简单的运行信息 和 硬盘分区列表。

回复

使用道具 举报

22#
 楼主| 发表于 2022-9-3 10:01:24 | 只看该作者
本帖最后由 dos时代菜鸟 于 2022-9-3 10:02 编辑

屏幕小的,可以手动把 cmd 窗口 字体 调整为 宋体 14,





回复

使用道具 举报

23#
 楼主| 发表于 2022-9-3 17:28:36 | 只看该作者

回复

使用道具 举报

24#
 楼主| 发表于 2022-9-3 18:58:23 来自手机 | 只看该作者
那个 diskpart 擅自 * 选分区的毛病,还是嘚考虑规避。
回复

使用道具 举报

25#
发表于 2022-9-3 19:46:25 | 只看该作者
没看懂 这个软件是干啥的

点评

你说的是 diskpart 还是这个脚本? 这个脚本,啥也不干。 只是一个关于算法的讨论贴。 要想找用 diskpart分区的,可以看我的其他贴,比如 pecmd 给 diskpart 做的壳。  详情 回复 发表于 2022-9-3 20:23
回复

使用道具 举报

26#
 楼主| 发表于 2022-9-3 20:23:09 来自手机 | 只看该作者
iyg429 发表于 2022-9-3 19:46
没看懂 这个软件是干啥的

你说的是 diskpart
还是这个脚本?
这个脚本,啥也不干。
只是一个关于算法的讨论贴。

要想找用 diskpart分区的,可以看我的其他贴,比如 pecmd 给 diskpart 做的壳。
回复

使用道具 举报

27#
 楼主| 发表于 2022-9-3 21:58:08 | 只看该作者
本帖最后由 dos时代菜鸟 于 2022-9-3 22:08 编辑

既然 无聊,就 用这个脚本 做个无聊的 死循环脚本,每隔几秒就 调用下 diskpart 。

死循环 播放 硬盘及分区列表的信息,每循环一圈,重新 刷新一次列表。

时间控制方面 用 外部命令 choice.exe ,是个老牌 外部程序了,从 dos 时代就存在的 程序。

choice.zip (38.57 KB, 下载次数: 5)

脚本在1楼
把窗口手动设置成 半透明,看上去就更 “高大上了”
回复

使用道具 举报

28#
发表于 2022-9-10 23:55:22 | 只看该作者
楼主可以把与diskpart.exe相关的文件都提取出来吗?
那样就方便在有些过度精简的PE中运行了。
先谢谢了!!!
回复

使用道具 举报

29#
 楼主| 发表于 2022-9-11 20:43:31 | 只看该作者
18588452015 发表于 2022-9-10 23:55
楼主可以把与diskpart.exe相关的文件都提取出来吗?
那样就方便在有些过度精简的PE中运行了。
先谢谢了! ...

依托 系统部分服务,不好提取。

点评

额,好吧,有没有试过Depends,我试了下,提取的体积太大了,哎。。。  详情 回复 发表于 2022-9-11 20:46
回复

使用道具 举报

30#
发表于 2022-9-11 20:46:29 | 只看该作者
dos时代菜鸟 发表于 2022-9-11 20:43
依托 系统部分服务,不好提取。

额,好吧,有没有试过Depends,我试了下,提取的体积太大了,哎。。。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-23 07:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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