无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: dos时代菜鸟
打印 上一主题 下一主题

diskpart shell ,用 pecmd 给 diskpart 做个外壳 2022.03.23 ver:1.28 改进

    [复制链接]
151#
 楼主| 发表于 2019-7-31 22:32:58 | 只看该作者
nttwqz 发表于 2019-7-31 22:24
你想多了,没有!

原来我也有这么个 卡,后来被我 diskpart 弄了一遍,就没这毛病了。
也不知道这毛病怎么弄出来的。 如果一个卡 里面有俩这样的分区,就麻烦了。

sele vol 以后,list part,看 * 焦点 ,应该能确定 那个卷对应的分区。因为 它不是 自动 * 的么?呵呵
那么,如果 sele part 然后 list vol 能看到  vol 的焦点落在对应的卷上么?

要是 不论  sele vol 还是 selel part ,都不能 detail part 来获取结果,那,我可以考虑,将分区信息与卷信息分两行显示在列表中,可以看出他们是找不到对方的分区 或者卷,
回复

使用道具 举报

152#
发表于 2019-7-31 22:45:35 | 只看该作者
dos时代菜鸟 发表于 2019-7-31 22:32
原来我也有这么个 卡,后来被我 diskpart 弄了一遍,就没这毛病了。
也不知道这毛病怎么弄出来的。 如果 ...

我在很久之前就考虑过多分区的情况,后来好像证实是我想多了,这样的情况只能有一个分区。

sel vol/list part
sel part/list vol
都是相互对应的,可以用这两种方法判断分区和卷的对应关系。

也不知道你有没有从我第二步的diskpart脚本中看出点什么来,我的算法中,磁盘-分区-卷的本来就是对应的,不用做额外判断!
回复

使用道具 举报

153#
 楼主| 发表于 2019-7-31 23:27:10 | 只看该作者
本帖最后由 dos时代菜鸟 于 2019-7-31 23:35 编辑
nttwqz 发表于 2019-7-31 22:45
我在很久之前就考虑过多分区的情况,后来好像证实是我想多了,这样的情况只能有一个分区。

sel vol/li ...


这就好办了
diskpart Shell 1.23.4.7z (1.63 MB, 下载次数: 6)

正常是应该先考虑 list part + sele part + detail part +list vol+ detail vol  ,
但是有那个 id=ef 的情况,我就考虑 detail disk + sele vol +detail part +detail vol 再 list part +sele part +detail part ,就是先把 vol 的信息都跟分区对应着存好,list part 的时候,就只剩下没有 卷的分区信息需要搜集了,没有卷的分区对应的信息也少。结果现在出现 找不到对应分区的卷这种情况,也就是 预 * 了的分区,如果sele vol + list part 可以获取焦点分区 能够把卷跟分区对应上,也就没问题了。

获取硬盘分区序列的算法:
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步)已提取过的卷数据冲入该分区对应的变量组中,如果没有
          10、选择这个分区 sele part x
          11、detail part  获取分区对应的另一部分信息  分区号/act/id/hid#/卷号
12、list vdisk  获取虚拟硬盘列表,将虚拟硬盘的部分信息修改进对应硬盘的信息中,name/port等
回复

使用道具 举报

154#
发表于 2019-8-3 21:22:44 | 只看该作者

这个本版已经可以获取上次获取不到的信息,但是文件系统未获取,也不知道是不是你刻意为之以区分其它磁盘。
回复

使用道具 举报

155#
 楼主| 发表于 2019-8-4 21:15:59 | 只看该作者
nttwqz 发表于 2019-8-3 21:22
这个本版已经可以获取上次获取不到的信息,但是文件系统未获取,也不知道是不是你刻意为之以区分其它磁盘 ...

多谢帮忙测试反馈

果然,原来是我 把 只能通过 list part 获取卷对应分区的 FS 设置成了 . ,
这可真是,在程序面前,一点儿也不能差呀。哈哈

已经纠正了,放在了一楼
回复

使用道具 举报

156#
 楼主| 发表于 2019-8-8 11:07:43 | 只看该作者
我想,如果 已经基本解决 频繁调用 diskpart 的繁琐耗时的问题,可能可以进一步 做些什么。
比如,图形化的 分区显示,显示未使用部分,选择图形上未使用部分,可以直接创建分区等等。
等有了时间,再慢慢研究下。
回复

使用道具 举报

157#
发表于 2019-8-8 11:21:30 | 只看该作者
dos时代菜鸟 发表于 2019-8-8 11:07
我想,如果 已经基本解决 频繁调用 diskpart 的繁琐耗时的问题,可能可以进一步 做些什么。
比如,图形化 ...

这么6了?看好
回复

使用道具 举报

158#
发表于 2019-8-12 17:14:24 | 只看该作者
应该让脚本更加“智能”:

在初始化硬盘为GPT后,开始点击“创建分区”按钮了:
可以提供现成的分区方案,类似于DiskGenius
另外,
当我选中EFI分区或MSR分区时,下面的文件系统类型应该智能匹配,比如EFI自动帮我选FAT分区,自动把ID改成EF等。。。

脚本让使用者感到智能化,而不是专业化
回复

使用道具 举报

159#
发表于 2019-8-13 22:25:07 | 只看该作者
本帖最后由 datbik189 于 2019-8-14 07:49 编辑
dos时代菜鸟 发表于 2019-7-28 11:17
好的,
初步测试了一下,你这个方法,可以用秒算结果来形容了。



解决了就好,附件是我的测试结果,看起来还可以。

用的电脑是T420i,7年前的电脑,奔腾处理器


DISKPART.rar

989.46 KB, 下载次数: 12, 下载积分: 无忧币 -2

回复

使用道具 举报

160#
 楼主| 发表于 2019-8-26 07:52:17 | 只看该作者
ver=1.23.6
发现一处纰漏,vhd 的 other_info 信息显示有问题,已经纠正。
改进 分区时 可以根据所选分区类型 自动选择 文件系统类型。
回复

使用道具 举报

161#
发表于 2019-8-27 11:25:53 | 只看该作者
有壳好,不用记那么命令了!~!~
回复

使用道具 举报

162#
发表于 2019-9-26 14:22:34 | 只看该作者
谢谢  辛苦了。。。。。。。
回复

使用道具 举报

163#
 楼主| 发表于 2020-5-7 18:49:14 | 只看该作者
本帖最后由 dos时代菜鸟 于 2020-5-7 18:56 编辑

更新了一下
有关 VHD 方面的。可以创建 子 vhd 了,
更新在1楼

设置创建一个 子vhd


创建 子vhd 的脚本内容和执行结果


子vhd 自动被挂载了。


回复

使用道具 举报

164#
发表于 2020-5-12 00:30:47 | 只看该作者
感谢。看到更新了。
回复

使用道具 举报

165#
 楼主| 发表于 2020-5-16 21:54:49 | 只看该作者


早有见过.只是加密压缩了.用着还可以,有些凌乱.diskpart 的执行 是基于 diskpart脚本 执行的.

我这个 是 基于 diskpart 命令行的,运行效率上应该 有所改进了.功能上嘛,还不想弄的太复杂.
回复

使用道具 举报

166#
发表于 2020-5-21 14:51:45 | 只看该作者
非常好用,楼主V5,感谢你的无私分享!
回复

使用道具 举报

167#
发表于 2020-6-27 11:10:15 | 只看该作者
楼主能否告知:分区列表中的Label内容是哪个变量得出的?
我逐个试都没找到,想把它自动填入格式化卷标里。
回复

使用道具 举报

168#
发表于 2020-6-27 11:49:12 | 只看该作者
本帖最后由 2010hook 于 2020-6-27 22:45 编辑

格式化卷、设置属性等对话框的标题,我添加了盘符,减少误操作,很简单:格式化 %chk_ltr%:
如果还能获取当前卷标,减少打字,那就更好了。
回复

使用道具 举报

169#
发表于 2020-6-27 22:36:31 | 只看该作者
本帖最后由 2010hook 于 2020-6-27 22:41 编辑

有空能否帮忙看一下,卷标 是哪个变量获取的?我想把它自动添加到格式化时的卷标输入框。感谢!

回复

使用道具 举报

170#
 楼主| 发表于 2020-6-27 22:36:36 | 只看该作者
2010hook 发表于 2020-6-27 11:49
格式化卷、设置属性等对话框的标题,我添加了盘符,很简单,减少误操作:格式化 %chk_ltr%:
如果还能获取 ...

看  _Sub radi0  段 内容,就知道了
回复

使用道具 举报

171#
发表于 2020-6-27 22:39:12 | 只看该作者
本帖最后由 2010hook 于 2020-6-27 22:40 编辑

chk_*、part_* 相关的变量,我逐个试了都没有。
回复

使用道具 举报

172#
发表于 2020-6-27 22:44:48 | 只看该作者
2010hook 发表于 2020-6-27 22:36
有空能否帮忙看一下,卷标 是哪个变量获取的?我想把它自动添加到格式化时的卷标输入框。感谢!

什么卷标?突然冒出来这句话,不知道怎么理解。。。
回复

使用道具 举报

173#
 楼主| 发表于 2020-6-27 22:51:00 | 只看该作者
本帖最后由 dos时代菜鸟 于 2020-6-27 23:02 编辑
2010hook 发表于 2020-6-27 22:39
chk_*、part_* 相关的变量,我逐个试了都没有。

需要你 引用 表格 第 12 个项目 自行设置一个 变量 用于你的目的。
radi0 段并没有 引用 第12个项目 设置变量,你可以自己设置一个呀。试试看吧。如下图 两个地方分别添加 那么两句话就是了。






从 下图 位置可以得知  卷标 项目 排行 第12



评分

参与人数 1无忧币 +5 收起 理由
2010hook + 5 有劳了,非常感谢!

查看全部评分

回复

使用道具 举报

174#
 楼主| 发表于 2020-6-27 22:56:26 | 只看该作者
红毛樱木 发表于 2020-6-27 22:44
什么卷标?突然冒出来这句话,不知道怎么理解。。。

他是想 格式化某个分区的时候 直接用被格式化分区 的卷标 lable ,不用再手动填写一遍。

其实就是 引用一下列表中 涉及卷标的那个 列 中的数据也就是了。
回复

使用道具 举报

175#
发表于 2020-6-27 22:57:09 | 只看该作者
好复杂,新手看得有点晕,纯支持。
回复

使用道具 举报

176#
发表于 2020-6-27 23:17:20 | 只看该作者
本帖最后由 2010hook 于 2020-6-28 08:19 编辑

我默认字体是Tahoma,非等宽,没看出对应关系。

%chk_lab% 输出末尾包含很多空格,我把 mstr -trim chk_lab=%chk_lab% 插入到第255行,初步解决。
如果要对所有结果去除首尾空白,mstr -trim 应该放在哪里最合适呢?
回复

使用道具 举报

177#
发表于 2020-6-28 08:38:08 | 只看该作者
我把改好的发出来,主要是标题栏加入硬盘名称或盘符。

DiskPart_Shell.7z

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

回复

使用道具 举报

178#
发表于 2020-6-28 08:40:57 | 只看该作者
硬盘均分 是比较落后的方案,浪费空间。
我觉得 一键创建启动硬盘U盘(ESP+若干常规分区,ESP可置后) 更实用。
回复

使用道具 举报

179#
 楼主| 发表于 2020-6-29 08:14:48 | 只看该作者
2010hook 发表于 2020-6-28 08:40
硬盘均分 是比较落后的方案,浪费空间。
我觉得 一键创建启动硬盘U盘(ESP+若干常规分区,ESP可置后) 更实 ...

均分 只是提供个 脚本模型,
在执行前,不是提供了 指令吗?可以在那上面改。
这就是个 diskpart 的外壳,如果 一点儿 diskpart 命令都不明白,那 也就不存在啥 浪费不浪费的了,小白用这个,那就嘚用落后的方案呗。弄得复杂了,出问题的几率也大。 我这费尽心思 弄出的逻辑 闹不好,人家小白一个不注意就 出大错。不敢弄得太 深,太烧脑。

你要是 想改成这个方案的,可以自己到 代码里 修改,说明了是 修改版就行。这玩意儿既然开源,就没 版权,就是方便 技术人员 研究的。
回复

使用道具 举报

180#
发表于 2020-6-30 07:55:11 | 只看该作者
小白是不可能用你这个脚本的,真不可能。即使在无忧,对Diskpart感兴趣的也不多。
用这种命令脚本的都是极客,喜欢可靠灵活的命令行并且希望减少重复输入。
我认为,好的代码应该是尽力减少人为出错和重复劳动。这是我学习批处理的出发点,只是没学过PECMD语法,没法修改。
目前已经很好了,要做到更细致周全的确烧脑,你权当让我们瞻仰膜拜好了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-20 07:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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