|
获取硬盘分区序列的算法:
1、list disk获取硬盘列表 计算硬盘个数/dyn/sta/size/free
2、逐个选取硬盘 sele disk x
3、detail disk 获取硬盘信息和所包含的各个卷
硬盘的 name/prot/gpt/rw/info
4、逐个选择卷 sele vol x
5、detail part 获得卷及对应分区编号和部分分区信息,
卷对应的 分区号/act/id/hid#
如果无法获取改卷对应的分区,尝试通过
5.1 list part 获取当前分区焦点的方式获取对应的分区号,但将无法获取 /act/id/hid#
如果明确了卷 对应的 分区
6、获得卷的信息
卷的 卷号/盘符/卷标/FS/STA/info
7、detail vol 获取卷的一些信息
卷对应的 rw/hid*/free
8、list part 获取该硬盘对应的分区列表 获取各个分区的一部分信息
分区对应的 硬盘/分区号/type/size/offset
9、结合第5步逐个判断分区是否有对应的卷,如果有,就用(5/6/7步)已提取过的卷数据冲入该分区对应的变量组中,如果没有
可能是扩展分区或 linux 分区
10、选择这个分区 sele part x
11、detail part 获取分区对应的另一部分信息 分区号/act/id/hid#/卷号
12、list vdisk 获取虚拟硬盘列表,将虚拟硬盘的部分信息修改进对应硬盘的信息中,name/port等
常常情况下 diskpart 内建的 vol+part 体系会互相关联,也就是 select vol 时,相关的part 也会获得焦点,而 select part 时 ,对应的 vol 也会获得焦点。
但是,
有的分区信息不能通过 select vol + detail part +detail vol方式获取(比如某些移动卡 part 被自动选择焦点),
而另有一些分区信息又不能通过select disk + select part + detail part 的方式获取(比如 win10-2019-ltsc中的 id=ef 的分区),这个算法照顾到这两种情况而设计。
算法设计绝不是将某个 特例 当作特例而添加 “如果。。。那么” 来解决,而是将两套算法融合,使用于将来可能更广泛的情况。
看这个信息有用不? dos时代菜鸟 贴子中看到的
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=413760
|
|