无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 89989|回复: 480
打印 上一主题 下一主题

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

    [复制链接]
跳转到指定楼层
1#
发表于 2019-3-29 15:06:03 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dos时代菜鸟 于 2023-2-24 12:17 编辑

利用 pecmd 为 diskpart 做了一个界面,集成了一些常用的功能,
目前 仅支持 win7及以上系统 中文环境下的 中英文 diskpart 环境。因为 界面 是中文。



要求系统中必须有 diskpart.exe

绝不是靠运行 diskpart 脚本 来实现某一个操作,而是 直接与 diskpart 程序实施交互,这样指令操作,就如同在 diskpart 界面下运行一样,不用频繁通过脚本调取 diskpart 程序,也减少了 操作时间。

功能包括,硬盘初始化,创建、删除分区,硬盘或某一区域的平均分区,设置卷盘符,属性,装卸 vhdx ,等等

通过pecmd 精确获取硬盘未分区区域的位置和性质,可以直观选择这些区域并通过diskpart创建分区。



1.28  x64&x86 合一压缩。  

针对 指令中包含中文的情况,用 code + sed 转化为宽字符。感谢 527104427 发现问题并提出的解决方案。还有 datbik189 点睛回复。

ver_1.28.7z (1.44 MB, 下载次数: 308)


1.27.2 admin 测试
http://bbs.wuyou.net/forum.php?m ... 8MTE5OHw0MTM3NjA%3D
改进 admin 提权 及 dpi=125时 计算器 后主界面缩小的问题。


1.27 单diskpart进程 版
DiskPart.Shell.1.27.2.Exe.7z (1.43 MB, 下载次数: 323)
核心脚本: DiskPart.Shell.1.27.2.Script.txt.7z (26.84 KB, 下载次数: 124)
改进日志: updata.txt (14.34 KB, 下载次数: 101)

1.26.7 Script
diskpart_shell_1.26.7.Script.txt.7z (1.43 MB, 下载次数: 395)




===========================


界面整体效果



对ntfs分区进行容量调整,可以输入运算式。





可以随时 运行编辑 diskpart脚本 ,查看运行结果,或者 help








1.PNG (33.17 KB, 下载次数: 288)

1.PNG

评分

参与人数 22无忧币 +107 收起 理由
ksafei + 5 很给力!
whyme22 + 5 赞一个!
slyneo + 5 很给力!
smartcowboy + 5 很给力!
ikaze + 5 很给力!
wuxin9712 + 5
cuicongyuan + 5
2012qianyuanain + 5 很给力!
mooning + 5 很给力!解决了我给我的u盘分区赋予盘符的问.
sevenyu + 5 很给力!
2010hook + 5 再接再厉
mjgzaj + 5 赞一个!
freesoft00 + 5
2012依然L + 5 很给力!
dytechnology + 5
wynew8au + 5 很给力!
maomihuacha + 2 很给力!
Hysanohsp + 5
有阴也有阳 + 5 老树开新花,产生了一个质的飞跃!
qh6420933 + 5 很给力!
我是来搞事的 + 5 赞一个!
527104427 + 5 很给力!

查看全部评分

2#
 楼主| 发表于 2019-3-29 15:56:35 | 显示全部楼层
nttwqz 发表于 2019-3-29 15:19
直接使用编程语言如何?

如果用编程,还要 diskpart 干什么,直接做个 分区管理的软件多好?
如果 编程序 只是给  diskpart 做个外壳,我个人认为还是用脚本吧。
回复

使用道具 举报

3#
 楼主| 发表于 2019-3-29 16:32:51 | 显示全部楼层
527104427 发表于 2019-3-29 16:03
菜鸟大哥也发现pecmd的魅力啦,赞一个

大概2008年 就 用着编脚本 ,显卡声卡网卡驱动的 pe 安装。
回复

使用道具 举报

4#
 楼主| 发表于 2019-3-29 23:52:49 来自手机 | 显示全部楼层
只是想用pecmd给diakpart的部分功能做个外壳界面而已。
回复

使用道具 举报

5#
 楼主| 发表于 2019-3-30 00:06:44 来自手机 | 显示全部楼层
窄口牛 发表于 2019-3-29 17:57
搞点实际意义大些的,命令办不了的那些。

啥事儿命令办不了的,估计我也整不了。
回复

使用道具 举报

6#
 楼主| 发表于 2019-3-30 00:08:24 来自手机 | 显示全部楼层
nttwqz 发表于 2019-3-29 16:56
当然不一样了,因为实际上还是diskpart在操作~

对,也就是部分的实现diskpart的功能,方便操作而已
回复

使用道具 举报

7#
 楼主| 发表于 2019-3-31 14:40:30 | 显示全部楼层
尝试改进了下 脚本算法,增加了几个 功能,大家可以帮忙看看效果,要是感觉可以,
我下一步 想添加些东西,比如 分区的操作,新建、删除、大小改变啥的
回复

使用道具 举报

8#
 楼主| 发表于 2019-3-31 23:32:42 来自手机 | 显示全部楼层
考虑用 TABL 制表显示分区序列,但发现有些问题。pecmd 的TABL当所选项目与第一行数据不在一篇时,鼠标离开表格再回来,鼠标悬停一会,表格会自动选成第一行 。
回复

使用道具 举报

9#
 楼主| 发表于 2019-4-1 16:47:48 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-1 16:50 编辑

改用 tabl 表格方式 ,新脚本发到1楼,
增加 分区新建,删除,硬盘自动均分等功能。

因为一个窗口 两个表,脚本需要确定 用户选择的是 对硬盘操作还是分区,所以 硬盘表 和 分区列表 做了 radi 单选模式,点击  “分区列表” 四个字边上的 小圆点,才能 选择分区,同样 ,点击 “硬盘列表” 右边的小圆点,才能选择硬盘。
回复

使用道具 举报

10#
 楼主| 发表于 2019-4-1 22:59:44 | 显示全部楼层
diskpart 常用的功能 还有 激活 主分区,为ntfs分区调整大小,修改分区id,分区格式化,创建vhd等等

等我慢慢加入吧。

回复

使用道具 举报

11#
 楼主| 发表于 2019-4-2 15:00:41 | 显示全部楼层
脚本基本完工
一个脚本 适用于大部分pe 使用。
图形界面的 diskpart ,哈哈,虽然 很简陋。总比没有强。
如果不算 pecmd 才 几十k.
回复

使用道具 举报

12#
 楼主| 发表于 2019-4-2 17:53:39 来自手机 | 显示全部楼层
窄口牛 发表于 2019-4-2 17:41
恭喜第一版正式出炉,我的系统是win7,分辨率是2k半,显示dpi是200,所以这种的在我这里都没法用,显示一团 ...

看来需要设置字体大小才行。
回复

使用道具 举报

13#
 楼主| 发表于 2019-4-2 21:37:18 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-2 22:04 编辑
nttwqz 发表于 2019-4-2 19:26
以普通权限执行脚本,发现需要调用4次diskpart才能获取硬盘分区相关信息,建议改进核心算法,不超过两次为 ...


整个脚本 只是用到 pecmd 的窗口 控件 文件读写 等一些功能 ,关于磁盘方面的 一点儿都没用到。

diskpart 调用次数是硬伤,要获取 更全面的 硬盘和分区数据,而且是 diskpart 体系一致的数据,就要用 diskpart 来做数据搜集,
1 获取硬盘数量等基本信息,
2 根据第一步获取的信息生成diskpart 脚本,用于获取更详细的的信息
3 用上一步生成的脚本 获取详细信息,
4 查缺补漏,一些有卷号而没有分区号的 卷,也需要列入列表,甚至有些这样的卷 确实可以明确其 分区号的,还要给其明确下。

如此,就需要运行 4次 diskpart 了。

至于 管理权限,目前还没啥好办法,因为要 pe 下也用,也就没办法用 vbs 权限那种方法了。直接右键管理员运行吧。
其实,我的win10 都是 自己封的wim 安装的,都是离线设置好 管理员账户 封包,对 管理员权限这事很久没 感觉了。

免杀版的 pecmd 到时可以替换下。
回复

使用道具 举报

14#
 楼主| 发表于 2019-4-2 22:28:18 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-2 22:41 编辑

刚刚 上传了下
将所有窗口 字号 调整为 9号,但愿能避免受系统默认设置影响
将 pecmd 换成免杀版的了。
回复

使用道具 举报

15#
 楼主| 发表于 2019-4-2 22:29:27 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-2 22:41 编辑
窄口牛 发表于 2019-4-2 17:41
恭喜第一版正式出炉,我的系统是win7,分辨率是2k半,显示dpi是200,所以这种的在我这里都没法用,显示一团 ...


刚把  pecmd 的脚本 中 涉及到窗口 的 字体都设置 成了  9号字,但愿能解决这个问题,
还要麻烦 测试下。
回复

使用道具 举报

16#
 楼主| 发表于 2019-4-2 23:00:35 | 显示全部楼层
nttwqz 发表于 2019-4-2 22:52
1、2合成一步
3、4合成一步

好的,我再研究研究
回复

使用道具 举报

17#
 楼主| 发表于 2019-4-3 00:06:21 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-3 00:08 编辑
nttwqz 发表于 2019-4-2 22:52
1、2合成一步
3、4合成一步


第一步 可以用矩阵法代替

第四步 不行,有的卷 detail disk 是看不到的,而通过 select vol 选择 这个卷却可以 知道 这个卷是不是真的 对应着某个分区,至少能够确定其 对应的硬盘。通过 对 part 的分析能够 知道 part 对应的 vol ,但是 有的 vol 没有 part 对应,就需要 sele vol 、detail vol 来分析卷。不主动选择 卷是不行的。
回复

使用道具 举报

18#
 楼主| 发表于 2019-4-3 08:27:03 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-3 08:50 编辑
nttwqz 发表于 2019-4-3 07:54
detail disk看不到这个卷,list vol是否看得到这个卷?如果看不到,你又是怎么知道这个卷存在的?如果 ...

这个还真算是 diskpart 的 bug
第一步中 list vol 列出 vol
第二步中 通过 select disk 、 list part  、detail part、 detail disk  获取某硬盘对应的分区和卷以及卷跟分区的对应关系,然后最后才能发现 有哪个 vol 没有列出来
还是要有第三步,把 漏网的 vol 再 select vol 、detail part  一下。才能知道 这个 vol 是否有对应的 part,有的是没有对应的 part 的,但有的就有如果有,就要把这个 vol 的信息 当作 第二步中 detail disk 获取的信息一样填充到对应的分区信息中。
回复

使用道具 举报

19#
 楼主| 发表于 2019-4-3 20:42:54 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-3 22:27 编辑
nttwqz 发表于 2019-4-3 12:33
是的,第一步中已经获取卷号和分区编号,第二部怎么验证都是可以的。

我现在想知道,如何重现下面这 ...


2019ltsc 下建立一个  固定 模式的 vhdx 然后 mbr 模式把一个ntfs主分区 id 改为 ef .
就看到这情况了。以前也遇到过这种情况,但是不明原因。

之前我描述的可能有误,是sele part 、 detail part ,显示该分区 没有 挂载卷。而实际上通过 sele vol 、detail vol 可以看到 这个卷就是 那个分区。list vol 是可以看到这个卷的。

其实这种情况很少见,基本可以忽略。做一种可能性放上去,没有的,也不运行。

看我楼上的图,就明白了。
回复

使用道具 举报

20#
 楼主| 发表于 2019-4-3 21:26:38 | 显示全部楼层
刚发现 新思路的 parts.cmd 在获取分区 剩余空间 上 有点偏差,已经修正放一楼。 1.06
回复

使用道具 举报

21#
 楼主| 发表于 2019-4-3 22:54:46 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-3 23:08 编辑
527104427 发表于 2019-4-3 22:50
顺便说一下,PECMD处理文本的能力比CMD强,那两个批处理完全可以用PECMD代码来替代。


pecmd 好像没有 split 这样的函数,怎么处理一条记录中有多个字段的情况?
还有 pecmd 自带说明 关于 rstr 还是 sstr  好像写错了。记不清了。

看来需要 慢慢研究消化。
回复

使用道具 举报

22#
 楼主| 发表于 2019-4-4 14:34:45 | 显示全部楼层

等研究研究,单独弄个 wcs
回复

使用道具 举报

23#
 楼主| 发表于 2019-4-4 19:51:16 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-4 19:53 编辑

弄些颜色,这下一眼就能看出不同硬盘的分区

回复

使用道具 举报

24#
 楼主| 发表于 2019-4-4 20:51:15 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-4 20:52 编辑
527104427 发表于 2019-4-4 20:22
感觉用TABS搞成分页比较好吧。RADI勾选才能操作会有点懵


还没研究到那 呢,呵呵,是分页么,我想一页 就 显示 硬盘和分区的数据


刚研究 着色 的事情,需要根据硬盘表行号奇偶 给不同硬盘分区区分开。之前想的简单了,用硬盘号,不行,有的两个硬盘挨着都是奇数或偶数。
回复

使用道具 举报

25#
 楼主| 发表于 2019-4-4 21:47:47 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2019-4-4 21:49 编辑
527104427 发表于 2019-4-4 21:02
其实还有一种方法,就是,在上面的TABL表中选定了一个硬盘,下面TABL表就只显示该硬盘的分区。这样可以 ...


这个倒是可以做到,不用调用 多次diskpart,因为表里有区分。就是重绘分区列表就行。

但是 要想知道 全部分区情况,就不行了。比如 要选到某个分区,要先把所有硬盘都点一遍才知道。翻到费劲了。

我弄那个 radi 就是为了 让脚本能够识别 用户到底要操作分区 还是硬盘,不然,两个表里面都有 被选中的 条目,就乱了。
回复

使用道具 举报

26#
 楼主| 发表于 2019-4-4 23:46:43 | 显示全部楼层
这回好了,不用 radi 了,分区也可以跟着硬盘的选择而相应变化了。
用到了 鼠标捕捉
回复

使用道具 举报

27#
 楼主| 发表于 2019-4-5 18:58:02 | 显示全部楼层
freesoft00 发表于 2019-4-5 01:12
文件系统类型还是大写比较顺眼
fat exFat  Raw
改成

已经改完,在一楼 1.13 版
回复

使用道具 举报

28#
 楼主| 发表于 2019-4-6 15:13:20 | 显示全部楼层
caocaofff 发表于 2019-4-5 22:19
建议给按钮做交互式Enable或Disable,比如只有选中某个分区或某个硬盘就激活某些按钮,否则默认灰色

已经尝试 改进,但是 也 改动了 一些其他的相关 部分,所以可能存在问题,需要修正或改进,请广泛测试,
已经放到1楼。

点评

简单测试了一下,没有发现什么问题。  详情 回复 发表于 2019-4-6 18:35
回复

使用道具 举报

29#
 楼主| 发表于 2019-4-6 23:23:11 | 显示全部楼层
freesoft00 发表于 2019-4-6 18:35
简单测试了一下,没有发现什么问题。

好的,谢谢,
继续改进,把脚本调取 修改 模块改成 内部运行了。有 edit 控件 来完成 实时脚本的加载和修改。
回复

使用道具 举报

30#
 楼主| 发表于 2019-4-6 23:39:43 | 显示全部楼层
发现 问题 硬盘分区全删除 模块 有问题,已经修复


1.15  脚本运行调取 模块 用 图形界面了,可以在程序内 实时 修改脚本就运行。不再需要 load_script.cmd

空脚本X 模块将发挥更大作用。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-14 03:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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