无忧启动论坛

标题: diskpart shell ,用 pecmd 给 diskpart 做个外壳 2022.03.23 ver:1.28 改进 [打印本页]

作者: dos时代菜鸟    时间: 2019-3-29 15:06
标题: diskpart shell ,用 pecmd 给 diskpart 做个外壳 2022.03.23 ver:1.28 改进
本帖最后由 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, 下载次数: 248)


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, 下载次数: 318)
核心脚本: DiskPart.Shell.1.27.2.Script.txt.7z (26.84 KB, 下载次数: 115)
改进日志: updata.txt (14.34 KB, 下载次数: 101)

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




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


界面整体效果



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





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








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

1.PNG

作者: nttwqz    时间: 2019-3-29 15:19
直接使用编程语言如何?
作者: dos时代菜鸟    时间: 2019-3-29 15:56
nttwqz 发表于 2019-3-29 15:19
直接使用编程语言如何?

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

作者: 527104427    时间: 2019-3-29 16:03
菜鸟大哥也发现pecmd的魅力啦,赞一个
作者: 红毛樱木    时间: 2019-3-29 16:14
顶,玩PECMD2012的人越来越多
作者: dos时代菜鸟    时间: 2019-3-29 16:32
527104427 发表于 2019-3-29 16:03
菜鸟大哥也发现pecmd的魅力啦,赞一个

大概2008年 就 用着编脚本 ,显卡声卡网卡驱动的 pe 安装。
作者: nttwqz    时间: 2019-3-29 16:56
dos时代菜鸟 发表于 2019-3-29 15:56
如果用编程,还要 diskpart 干什么,直接做个 分区管理的软件多好?
如果 编程序 只是给  diskpart 做个 ...

当然不一样了,因为实际上还是diskpart在操作~
作者: 窄口牛    时间: 2019-3-29 17:57
搞点实际意义大些的,命令办不了的那些。
作者: ddsony    时间: 2019-3-29 18:02
本帖最后由 ddsony 于 2019-3-29 18:07 编辑
nttwqz 发表于 2019-3-29 16:56
当然不一样了,因为实际上还是diskpart在操作~


diskpart功能已经很强大了,现成拿来当工具用就是,没必要重起炉灶编程,它本身也是用c/c++语言写成的。
当然,你想搞DG那样的功能规模则另当别论。
作者: 窄口牛    时间: 2019-3-29 18:18
dg到现在对ext支持也不行,因为linux对磁盘就一塌糊涂。diskpart强大啥,也就是在三四个分区格式里面还行。
作者: nttwqz    时间: 2019-3-29 19:22
窄口牛 发表于 2019-3-29 18:18
dg到现在对ext支持也不行,因为linux对磁盘就一塌糊涂。diskpart强大啥,也就是在三四个分区格式里面还行。

看成了exfat...

其实支持ext也没有太大必要吧?毕竟这是一个Windows下的分区工具
作者: dos时代菜鸟    时间: 2019-3-29 23:52
只是想用pecmd给diakpart的部分功能做个外壳界面而已。
作者: dos时代菜鸟    时间: 2019-3-30 00:06
窄口牛 发表于 2019-3-29 17:57
搞点实际意义大些的,命令办不了的那些。

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

作者: dos时代菜鸟    时间: 2019-3-30 00:08
nttwqz 发表于 2019-3-29 16:56
当然不一样了,因为实际上还是diskpart在操作~

对,也就是部分的实现diskpart的功能,方便操作而已
作者: cycyc    时间: 2019-3-30 10:43
窄口牛 发表于 2019-3-29 18:18
dg到现在对ext支持也不行,因为linux对磁盘就一塌糊涂。diskpart强大啥,也就是在三四个分区格式里面还行。

“因为linux对磁盘就一塌糊涂”--这得需要多大的勇气才敢这么说啊。
作者: 江南一根葱    时间: 2019-3-30 16:44
本帖最后由 江南一根葱 于 2019-3-30 16:45 编辑

我倒想微软到底啥时候支持ext4啊,
作者: my9823    时间: 2019-3-30 18:42

“因为linux对磁盘就一塌糊涂”--这得需要多大的勇气才敢这么说啊。

+1
作者: fkltd-123    时间: 2019-3-30 19:12
谢谢分享,下一个试试。
作者: dos时代菜鸟    时间: 2019-3-31 14:40
尝试改进了下 脚本算法,增加了几个 功能,大家可以帮忙看看效果,要是感觉可以,
我下一步 想添加些东西,比如 分区的操作,新建、删除、大小改变啥的
作者: cyf1990427    时间: 2019-3-31 21:47
这个不错,谢谢了。。这个不错,谢谢了。。这个不错,谢谢了。。
作者: dos时代菜鸟    时间: 2019-3-31 23:32
考虑用 TABL 制表显示分区序列,但发现有些问题。pecmd 的TABL当所选项目与第一行数据不在一篇时,鼠标离开表格再回来,鼠标悬停一会,表格会自动选成第一行 。
作者: dos时代菜鸟    时间: 2019-4-1 16:47
本帖最后由 dos时代菜鸟 于 2019-4-1 16:50 编辑

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

因为一个窗口 两个表,脚本需要确定 用户选择的是 对硬盘操作还是分区,所以 硬盘表 和 分区列表 做了 radi 单选模式,点击  “分区列表” 四个字边上的 小圆点,才能 选择分区,同样 ,点击 “硬盘列表” 右边的小圆点,才能选择硬盘。
作者: dos时代菜鸟    时间: 2019-4-1 22:59
diskpart 常用的功能 还有 激活 主分区,为ntfs分区调整大小,修改分区id,分区格式化,创建vhd等等

等我慢慢加入吧。


作者: 阿咏    时间: 2019-4-2 00:18
这个不错,谢谢了。。这个不错,谢谢了。。这个不错,谢谢了。。

作者: dos时代菜鸟    时间: 2019-4-2 15:00
脚本基本完工
一个脚本 适用于大部分pe 使用。
图形界面的 diskpart ,哈哈,虽然 很简陋。总比没有强。
如果不算 pecmd 才 几十k.
作者: levinsky    时间: 2019-4-2 17:28
谢谢分享  还是图文界面好...
作者: 窄口牛    时间: 2019-4-2 17:41
恭喜第一版正式出炉,我的系统是win7,分辨率是2k半,显示dpi是200,所以这种的在我这里都没法用,显示一团糟。

作者: dos时代菜鸟    时间: 2019-4-2 17:53
窄口牛 发表于 2019-4-2 17:41
恭喜第一版正式出炉,我的系统是win7,分辨率是2k半,显示dpi是200,所以这种的在我这里都没法用,显示一团 ...

看来需要设置字体大小才行。
作者: 窄口牛    时间: 2019-4-2 17:55
win7对高分屏支持不好引起的,系统原因。
作者: promrhxq    时间: 2019-4-2 18:11
pecmd 给 diskpart 外壳,超级厉害,喜欢,感谢分享
作者: promrhxq    时间: 2019-4-2 18:11
pecmd 给 diskpart 外壳,超级厉害,喜欢,感谢分享
作者: nttwqz    时间: 2019-4-2 19:26
以普通权限执行脚本,发现需要调用4次diskpart才能获取硬盘分区相关信息,建议改进核心算法,不超过两次为宜,如果能结合pecmd做到一次获取那再好不过了。

pecmd建议使用免杀版,要不然还没下完就被杀毒软件杀了。



作者: dos时代菜鸟    时间: 2019-4-2 21:37
本帖最后由 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 到时可以替换下。
作者: dos时代菜鸟    时间: 2019-4-2 22:28
本帖最后由 dos时代菜鸟 于 2019-4-2 22:41 编辑

刚刚 上传了下
将所有窗口 字号 调整为 9号,但愿能避免受系统默认设置影响
将 pecmd 换成免杀版的了。
作者: dos时代菜鸟    时间: 2019-4-2 22:29
本帖最后由 dos时代菜鸟 于 2019-4-2 22:41 编辑
窄口牛 发表于 2019-4-2 17:41
恭喜第一版正式出炉,我的系统是win7,分辨率是2k半,显示dpi是200,所以这种的在我这里都没法用,显示一团 ...


刚把  pecmd 的脚本 中 涉及到窗口 的 字体都设置 成了  9号字,但愿能解决这个问题,
还要麻烦 测试下。
作者: nttwqz    时间: 2019-4-2 22:52
dos时代菜鸟 发表于 2019-4-2 21:37
整个脚本 只是用到 pecmd 的窗口 控件 文件读写 等一些功能 ,关于磁盘方面的 一点儿都没用到。

dis ...

1、2合成一步
3、4合成一步

如此就只需两步了。

只需两步即可获取list disk/list part/list vol/detail disk/detail part/detail vol中的所有信息



UAC问题只是用于测试,无需解决。


作者: dos时代菜鸟    时间: 2019-4-2 23:00
nttwqz 发表于 2019-4-2 22:52
1、2合成一步
3、4合成一步

好的,我再研究研究
作者: dos时代菜鸟    时间: 2019-4-3 00:06
本帖最后由 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 来分析卷。不主动选择 卷是不行的。
作者: nttwqz    时间: 2019-4-3 07:54
dos时代菜鸟 发表于 2019-4-3 00:06
第一步 可以用矩阵法代替

第四步 不行,有的卷 detail disk 是看不到的,而通过 select vol 选择 这 ...


detail disk看不到这个卷,list vol是否看得到这个卷?如果看不到,你又是怎么知道这个卷存在的?如果看得到,那这是否属于bug,这个可以将list vol放在第一次diskpart脚本中,第二步就可以进一步分析了

如何建立有卷号没有分区号的卷?
作者: sinoxer    时间: 2019-4-3 08:06
hao
作者: dos时代菜鸟    时间: 2019-4-3 08:27
本帖最后由 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 获取的信息一样填充到对应的分区信息中。

作者: nttwqz    时间: 2019-4-3 12:33
本帖最后由 nttwqz 于 2019-4-3 12:34 编辑
dos时代菜鸟 发表于 2019-4-3 08:27
这个还真算是 diskpart 的 bug
第一步中 list vol 列出 vol
第二步中 通过 select disk 、 list part ...


是的,第一步中已经获取卷号和分区编号,第二部怎么验证都是可以的。

我现在想知道,如何重现下面这三种你说情况?

1. 有卷号没有分区编号的卷
2. 所有磁盘的detail disk中都没有的但是list vol中有的卷
3. 无论是list vol还是所有磁盘的detail disk中都没有的卷,这个卷是如何发现的?
作者: dos时代菜鸟    时间: 2019-4-3 20:42
本帖最后由 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 是可以看到这个卷的。

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

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

作者: dos时代菜鸟    时间: 2019-4-3 21:26
刚发现 新思路的 parts.cmd 在获取分区 剩余空间 上 有点偏差,已经修正放一楼。 1.06
作者: 527104427    时间: 2019-4-3 22:50
dos时代菜鸟 发表于 2019-4-3 21:26
刚发现 新思路的 parts.cmd 在获取分区 剩余空间 上 有点偏差,已经修正放一楼。 1.06

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


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

看来需要 慢慢研究消化。
作者: 527104427    时间: 2019-4-4 00:05
本帖最后由 527104427 于 2019-4-4 00:07 编辑
dos时代菜鸟 发表于 2019-4-3 22:54
pecmd 好像没有 split 这样的函数,怎么处理一条记录中有多个字段的情况?
还有 pecmd 自带说明 关于 r ...


举个例子吧:


  1. //捕获diskpart输出
  2. EXEC* -hide &&a=cmd.exe /c echo exit|%ComSpec%/kprompt list$Sdisk$_|diskpart
  3. //mess. %&&a%

  4. //查找第一个"--------"所在行数
  5. LPOS* * ,&&b=--------,1,&&a

  6. //查找最后一个"DISKPART>"所在行数
  7. RPOS* * ,&&c=DISKPART>,1,&&a

  8. //截取"--------"和"DISKPART>"中间的数据
  9. CALC #&&d=%&&b%+1
  10. CALC #&&e=%&&c%-%&&b%-2
  11. READ -*,%&&d%+%&&e%,&&f,&&a
  12. //mess. %&&f%

  13. //截取磁盘号、状态、总大小、可用大小
  14. ENVI &&z=1
  15. LOOP #%&&z%<=%&&e%,
  16. {*
  17.         READ -*,%&&z%,&&g,&&f
  18.         MSTR * &&h,&&i,&&j,&&k,&&l,&&m=<2*>&&g
  19.         mess. [磁盘:%&&h%]  [状态:%&&i%]  [总大小:%&&j%%&&k%]  [可用大小:%&&l%%&&m%]
  20.         CALC #&&z=%&&z%+1
  21. }
复制代码

作者: 窄口牛    时间: 2019-4-4 06:36
高手间的交流,有看头。
作者: a22124497    时间: 2019-4-4 12:09
大佬可以,支持完善呀
作者: dos时代菜鸟    时间: 2019-4-4 14:34
527104427 发表于 2019-4-4 00:05
举个例子吧:

等研究研究,单独弄个 wcs
作者: dos时代菜鸟    时间: 2019-4-4 19:51
本帖最后由 dos时代菜鸟 于 2019-4-4 19:53 编辑

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


作者: 527104427    时间: 2019-4-4 20:22
dos时代菜鸟 发表于 2019-4-4 19:51
弄些颜色,这下一眼就能看出不同硬盘的分区

感觉用TABS搞成分页比较好吧。RADI勾选才能操作会有点懵
作者: dos时代菜鸟    时间: 2019-4-4 20:51
本帖最后由 dos时代菜鸟 于 2019-4-4 20:52 编辑
527104427 发表于 2019-4-4 20:22
感觉用TABS搞成分页比较好吧。RADI勾选才能操作会有点懵


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


刚研究 着色 的事情,需要根据硬盘表行号奇偶 给不同硬盘分区区分开。之前想的简单了,用硬盘号,不行,有的两个硬盘挨着都是奇数或偶数。
作者: 527104427    时间: 2019-4-4 21:02
dos时代菜鸟 发表于 2019-4-4 20:51
还没研究到那 呢,呵呵,是分页么,我想一页 就 显示 硬盘和分区的数据


其实还有一种方法,就是,在上面的TABL表中选定了一个硬盘,下面TABL表就只显示该硬盘的分区。这样可以避免所有分区都显示出来,看起来不那么乱了。但有一点不好,鼠标点一下硬盘,就得刷新一下分区情况、调用几次diskpart,可能会有点不爽。
作者: dos时代菜鸟    时间: 2019-4-4 21:47
本帖最后由 dos时代菜鸟 于 2019-4-4 21:49 编辑
527104427 发表于 2019-4-4 21:02
其实还有一种方法,就是,在上面的TABL表中选定了一个硬盘,下面TABL表就只显示该硬盘的分区。这样可以 ...


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

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

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

作者: dos时代菜鸟    时间: 2019-4-4 23:46
这回好了,不用 radi 了,分区也可以跟着硬盘的选择而相应变化了。
用到了 鼠标捕捉

作者: freesoft00    时间: 2019-4-5 01:12
本帖最后由 freesoft00 于 2019-4-5 01:17 编辑

文件系统类型还是大写比较顺眼
fat exFat  Raw
改成
FAT exFAT  RAW

创建分区的时候默认卷标为空就可以。

磁盘容量的单位由M改成MB吧

自动分区的时候默认最少是3个,是否可以放开,有时候一个磁盘只想单分区
自动分区,默认是主、扩展、逻辑磁盘,有时候也想全部都为主磁盘,主磁盘分完了,剩下的再为扩展,逻辑磁盘。





作者: dos时代菜鸟    时间: 2019-4-5 18:58
freesoft00 发表于 2019-4-5 01:12
文件系统类型还是大写比较顺眼
fat exFat  Raw
改成

已经改完,在一楼 1.13 版
作者: freesoft00    时间: 2019-4-5 19:35
dos时代菜鸟 发表于 2019-4-5 18:58
已经改完,在一楼 1.13 版

Ohter_INFO
改成Other_Info是不是更顺眼。这个列表可以稍微再宽一点,默认列标签名称没有显示全
分区列表中的part也可以再稍微宽点,也是默认没有显示全。
现在的默认卷标改成.了吗?好像是以一个英文的点
格式化卷,确定按钮放在右侧是不是更好。
激活分区按钮放中间就可以。、
装卸vhdx盘,确定按钮也放在右侧,扩展名vhd和vhdx就不用选择了,在定位文件的时候统一设置vhd和vhdx都显示就可以了。
都是些无关痛痒的意见。
作者: nttwqz    时间: 2019-4-5 20:47
freesoft00 发表于 2019-4-5 19:35
Ohter_INFO
改成Other_Info是不是更顺眼。这个列表可以稍微再宽一点,默认列标签名称没有显示全
分区列 ...

楼主写的代码貌似一直都存在这种问题,可能是习惯使然
作者: caocaofff    时间: 2019-4-5 22:19
建议给按钮做交互式Enable或Disable,比如只有选中某个分区或某个硬盘就激活某些按钮,否则默认灰色
作者: dos时代菜鸟    时间: 2019-4-6 15:13
caocaofff 发表于 2019-4-5 22:19
建议给按钮做交互式Enable或Disable,比如只有选中某个分区或某个硬盘就激活某些按钮,否则默认灰色

已经尝试 改进,但是 也 改动了 一些其他的相关 部分,所以可能存在问题,需要修正或改进,请广泛测试,
已经放到1楼。
作者: freesoft00    时间: 2019-4-6 18:35
dos时代菜鸟 发表于 2019-4-6 15:13
已经尝试 改进,但是 也 改动了 一些其他的相关 部分,所以可能存在问题,需要修正或改进,请广泛测试,
...

简单测试了一下,没有发现什么问题。
作者: dos时代菜鸟    时间: 2019-4-6 23:23
freesoft00 发表于 2019-4-6 18:35
简单测试了一下,没有发现什么问题。

好的,谢谢,
继续改进,把脚本调取 修改 模块改成 内部运行了。有 edit 控件 来完成 实时脚本的加载和修改。
作者: dos时代菜鸟    时间: 2019-4-6 23:39
发现 问题 硬盘分区全删除 模块 有问题,已经修复


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

空脚本X 模块将发挥更大作用。
作者: caocaofff    时间: 2019-4-7 19:12
建议将diskpart-Shell_Ver.1.15w.7z 稍加修改:

第35行:_Sub win0 ,W320 H100,DiskPart GUI Initializing,exit,#1,0,,-top -discloseb
第41行:_Sub Win1,W790 H610,DiskPart GUI,exit toWin,#1,0,,

所有窗口图标可以换成固定的比如shell32.dll#187,不然都是问号不好看
作者: dos时代菜鸟    时间: 2019-4-7 20:07
caocaofff 发表于 2019-4-7 19:12
建议将diskpart-Shell_Ver.1.15w.7z 稍加修改:

第35行:_Sub win0 ,W320 H100,DiskPart GUI Initializi ...

那 是个啥图标?我看看先。

刚加了个功能,可以把所选卷所在硬盘中所有未挂盘符的卷挂上盘符。
作者: dos时代菜鸟    时间: 2019-4-7 22:02
利用好  "空脚本X" 和 复制粘贴功能,可以把多个操作 集中到一个脚本中 一次运行,减少diskpart 的调用次数。

可以先选择操作等进入脚本调取界面时,复制代码, 但不执行,只是把 脚本复制了,复制粘贴 攒到一起,一起执行。
作者: keygen    时间: 2019-4-8 14:43
找不到磁盘

1.PNG (16.56 KB, 下载次数: 206)

1.PNG

捕获.PNG (48.44 KB, 下载次数: 204)

捕获.PNG

作者: dos时代菜鸟    时间: 2019-4-8 16:33
本帖最后由 dos时代菜鸟 于 2019-4-8 17:00 编辑
keygen 发表于 2019-4-8 14:43
找不到磁盘

可能是 pecmd 的问题,怎么连表都没出来呢,怀疑你的环境pecmd 不能生成 tabl 表,你系统里面是不是有 pecmd ?试着换成压缩包里的

因为 没有判断出 系统启动模式 是 bios 还是 efi ,估计是你系统里面用了比较古老的 pecmd .


作者: keygen    时间: 2019-4-8 18:34
的确是,C:\Windows\System32有份2011年的PECMD
删除就OK了
作者: dos时代菜鸟    时间: 2019-4-8 22:39
应用鼠标捕获勉强解决 pecmd的 tabl表鼠标回归后自动乱选的问题。
改进 Load_script 段 脚本运行结果 编辑框 显示为"末端"
优化部分代码,解决 有些窗口没有及时关闭导致 pecmd 进程滞留系统的问题。

话说 pecmd 的这个 tabl 鼠标游走回归后就会乱选的毛病还真是。。。。。。
唉,内部bug 总是比 文本脚本运行快,所以脚本才有机会再慢慢选回来。呵呵

0x40+12 =76 这个用 pecmd calc 算出来的十进制得数 还是管用的,用在 edit 类别上了。

作者: dos时代菜鸟    时间: 2019-4-9 16:05
本帖最后由 dos时代菜鸟 于 2019-4-9 16:06 编辑

windows 好像有病
整个磁盘分区序列中都是这样,
系统所在分区,叫 “boot” 中文叫 “启动”
负责启动的分区,叫 "system" 中文叫 “系统”

这个在 mbr 时代也就无所谓,可现在是 efi 了,gpt 了,就容易蒙。估计前些日子微软出的要给啥 补丁 就把系统 给更新到  负责启动 (名字和类型都叫做 system ) 的分区去了可能跟这个也有关系。

要想获取这样的数据,就要给他们另赋予个 内涵 比如 叫做  Loader  和 Operation 吧。呵呵
作者: dos时代菜鸟    时间: 2019-4-9 23:01
1.16c 增加 分区 、卷 隐藏属性查看列, # 表示分区级别隐藏 ,* 表示 卷级别的隐藏
获取硬盘分区 是否担任了启动引导任务 和是否存有当前操作系统。 ~ 表示担任引导任务的硬盘和分区,* 表示存储着当前操作系统。










作者: zhhww57    时间: 2019-4-9 23:10
干的漂亮~
作者: dos时代菜鸟    时间: 2019-4-10 09:10
本帖最后由 dos时代菜鸟 于 2019-4-10 09:11 编辑

在需要通过 分析卷来确定分区信息的 分区、卷 的 info 方面改进了 parts.cmd  ,虽然用的很少,但也需要考虑。1.16d

刚刚发现 只有 win10 2019ltsc 中的 diskpart 能够将 id=ef 的分区识别为卷,但是他却不能通过 select part /detail part / detail vol 的方式看到这个分区的卷信息,需要 select vol /detail part /detail vol 才能看到这个卷的信息并明确这个卷就是这个分区。

而之前的 diskpart 连把 这样的分区识别为 卷的能力都没有,这个很重要,至少可以挂载盘符 格式化和存储数据到这个分区。


作者: nttwqz    时间: 2019-4-10 10:10
dos时代菜鸟 发表于 2019-4-10 09:10
在需要通过 分析卷来确定分区信息的 分区、卷 的 info 方面改进了 parts.cmd  ,虽然用的很少,但也需要考 ...

偶看见bug10这种东西就觉的恶心~
作者: dos时代菜鸟    时间: 2019-4-10 11:28
nttwqz 发表于 2019-4-10 10:10
偶看见bug10这种东西就觉的恶心~

没办法,百足之虫死而不僵。win系统现在就是 微软的  尾大不掉。
作者: nttwqz    时间: 2019-4-10 13:56
dos时代菜鸟 发表于 2019-4-10 11:28
没办法,百足之虫死而不僵。win系统现在就是 微软的  尾大不掉。

我不是讨厌WIN,仅仅是讨厌bug10,流氓过头了!
作者: dos时代菜鸟    时间: 2019-4-10 14:20
nttwqz 发表于 2019-4-10 13:56
我不是讨厌WIN,仅仅是讨厌bug10,流氓过头了!

微软的主攻方向 已经不再 电脑软件上了。现在的 win 就会是这样,一种常年维护修修补补的状态。而且为了商业利益还要 有些 让人反感的举动,这都是必然的。
作者: caocaofff    时间: 2019-4-11 17:57
报告BUG:script目录改成带空格目录或直接把ini丢到带空格目录运行都刷不出来数据(压根没运行diskpart.exe)
作者: dos时代菜鸟    时间: 2019-4-11 18:22
直接用ini需要其他俩文件配合,parts.cmd是是负责运行diskpart获取分区信息的。你就运行那个外面的,diakpartshell.cmd就行了。
作者: caocaofff    时间: 2019-4-11 19:10
dos时代菜鸟 发表于 2019-4-11 18:22
直接用ini需要其他俩文件配合,parts.cmd是是负责运行diskpart获取分区信息的。你就运行那个外面的,diakpa ...

这个知道,我意思是你没对空格目录做兼容,你测试一下吧
作者: dos时代菜鸟    时间: 2019-4-11 20:27
本帖最后由 dos时代菜鸟 于 2019-4-11 20:32 编辑
caocaofff 发表于 2019-4-11 19:10
这个知道,我意思是你没对空格目录做兼容,你测试一下吧

测试了 ,把 diskpart_shell.cmd 和 script 文件夹一并放入 任何带空格的文件夹下 运行 diskpart_shell.cmd 没有问题。

要想改变 script 请在 diskpart2x.wcs 第32行添加一对 引号 内容,如下:红色部分
-----------------------------
  exec* &list_file=!cmd /c "chcp %cp% & "%curdir%\parts.cmd""
----------------------------------------------------------------------------


作者: caocaofff    时间: 2019-4-11 20:29
dos时代菜鸟 发表于 2019-4-11 20:27
测试了 ,把 diskpart_shell.cmd 和 script 文件夹一并放入 任何带空格的文件夹下 运行 diskpart_shell.c ...

你把script改成script script,cmd里也是
作者: dos时代菜鸟    时间: 2019-4-11 20:35
本帖最后由 dos时代菜鸟 于 2019-4-11 20:43 编辑
caocaofff 发表于 2019-4-11 20:29
你把script改成script script,cmd里也是


diskpart_shell.cmd 固定调用 与其同目录下的 script\diskpart2x.wcs 脚本,你这样改 script ,diskpart_shell.cmd 肯定因为找不到 脚本而失败,这样你需要 修改 diskpart_shell.cmd ,把 调用指令加 引号。

好吧,我修正了一下,直接把 wcs 脚本 拖拽给 pecmd 运行也可以,不论放什么地方,只要 保证脚本放在一起就行。
作者: caocaofff    时间: 2019-4-11 20:43
please test

diskpart 8.rar

2.06 MB, 下载次数: 2, 下载积分: 无忧币 -2


作者: dos时代菜鸟    时间: 2019-4-12 07:59
本帖最后由 dos时代菜鸟 于 2019-4-12 08:14 编辑
caocaofff 发表于 2019-4-11 20:43
please test


改好的 已经放 1 楼。其实你可以自己改下,就那么俩 引号的事情。

你把 scrpt 路径改了,diskpart_shell.cmd 里面也得改,而且要是带空格,就要加 引号。为啥要 改路径名呢?双击运行 cmd 不就行了么?
作者: caocaofff    时间: 2019-4-12 09:09
dos时代菜鸟 发表于 2019-4-12 07:59
改好的 已经放 1 楼。其实你可以自己改下,就那么俩 引号的事情。

你把 scrpt 路径改了,diskpart_s ...


现在测试没有问题了
作者: conlin888    时间: 2019-4-12 10:24
楼主是高手,好用!
作者: dos时代菜鸟    时间: 2019-4-12 10:40
caocaofff 发表于 2019-4-12 09:09
现在测试没有问题了

确实是,我为了测试 语言代码,加入了 chcp 指令 给  cmd ,批处理调用路径上就 没再加个引号。因为有 外面那个 diskpart_shell.cmd 调用,应该没问题,就没改。没想到 你老弟 还有这 想法呀。呵呵
作者: dos时代菜鸟    时间: 2019-6-1 11:47
发现一处错误,mbr 分区下 主分区激活按钮居然 不可用,现在已经改过来了,
是 因为 某次升级修改了表格结构,原本记录分区主、逻辑类型的字段后移,导致采集数据对不上。
作者: nttwqz    时间: 2019-6-1 16:03
dos时代菜鸟 发表于 2019-6-1 11:47
发现一处错误,mbr 分区下 主分区激活按钮居然 不可用,现在已经改过来了,
是 因为 某次升级修改了表格结 ...

又更新了~
作者: 窄口牛    时间: 2019-6-1 18:46
下载欣赏一下。
作者: hzjyswf    时间: 2019-6-11 14:08
学习了,谢谢,
作者: 2019hhh    时间: 2019-7-23 03:57
谢谢分享
作者: dos时代菜鸟    时间: 2019-7-23 11:26
最新测试 1.20.2
[attach]397454[/attach]
改进了 硬盘分区序列 获取 的方法,用 pecmd 使 diskaprt 驻留进程,随时传递给其命令,然后获取其命令结果。
减少 diskpart 频繁调取 成本。
作者: dos时代菜鸟    时间: 2019-7-23 20:28
2019.07.23

1.20.4
改进启动和数据刷新 模块,启动和刷新数据时 显示 调取的数据。
因为临时数据文件 不断增加,数据刷新的过程 可能会越来越慢,所以增加一个 “刷新diskpart” 的按钮,用于重新驻留 diskpart 进程,以减小临时文件大小。

1.20.3
用 pecmd 脚本取代 parts.cmd ,实现一次运行 diskpart 驻留进程并等待命令运行,进而节省 diskpart 的调用成本。
因为采用 pecmd+diskpart 获取硬盘分区序列,对一些字符定位进行了调整。
改进 硬盘均分 模块中 己算硬盘 大小的算法。
不再需要建立中间脚本,所有命令都传递给真实的diskpart 进程直接运行,所以 用变量取代了 创建dp_script 脚本文件,运行速度更快。
作者: 2019hhh    时间: 2019-7-23 21:14
下载收藏谢谢!
请教,若硬盘分c.d.e.f.4个区,系统在c盘,选中d盘,删除,然后退出工具,硬盘c(系统).e.f.是否不受影响?
作者: dos时代菜鸟    时间: 2019-7-23 21:21
2019hhh 发表于 2019-7-23 21:14
下载收藏谢谢!
请教,若硬盘分c.d.e.f.4个区,系统在c盘,选中d盘,删除,然后退出工具,硬盘c(系统).e.f.是否不 ...

应该不会受影响,不过,你为什么要这么做呢?
d盘删掉了,硬盘就有一块空间没有分配分区,就相当于空闲着浪费了。为啥不把它格式化呢?




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3