无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: dos时代菜鸟
打印 上一主题 下一主题

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

    [复制链接]
241#
发表于 2021-6-20 21:10:57 | 只看该作者
dos时代菜鸟 发表于 2021-6-20 19:16
我也遇到过这个情况,原因不明,
如果直接运行 DISKPART 可以顺利进入DISKPART界面么?
怕是 PECMD 版 ...

已确认,就是系统变量%path%某个路径下有pecmd.exe造成,换成新版或删除后,问题解决。
鉴于PE中一般都内置有pecmd,并且版本各异,建议优先使用工具自带的,如果没有,使用系统内置的,最好先检查下版本,满足要求再运行,否则提示。

下面的写法有问题,如果目标目录没有pecmd,则会从%path%变量下的目录查找运行,这就造成了错误,虽然看似兼容性更强。
  1. start /b "" /d "!pecmd_path!" "pecmd.exe" load  "!pecmd_script!"
复制代码
建议至少应改为
  1. start "" /b "!pecmd_path!\pecmd.exe" load  "!pecmd_script!"
复制代码



建议使用上面的配色,目前不够美观,可参考Excel表格格式,有一大堆漂亮的样式。
如果能适配高分屏就更好了。


点评

[attachimg]489239[/attachimg]  详情 回复 发表于 2021-10-25 09:07
时间太紧,过几天细细研究下。  详情 回复 发表于 2021-6-21 21:08
回复

使用道具 举报

242#
 楼主| 发表于 2021-6-21 21:08:45 来自手机 | 只看该作者
nttwqz 发表于 2021-6-20 21:10
已确认,就是系统变量%path%某个路径下有pecmd.exe造成,换成新版或删除后,问题解决。
鉴于PE中一般都 ...

时间太紧,过几天细细研究下。
回复

使用道具 举报

243#
 楼主| 发表于 2021-7-9 12:12:44 | 只看该作者
高分屏 没用过,不知道咋 调试。
脚本中 已经加入 设置每个窗口的字体,不知道能有效果不。
回复

使用道具 举报

244#
发表于 2021-7-10 04:18:35 | 只看该作者
mark一下,这工具还是很不错的
回复

使用道具 举报

245#
发表于 2021-8-10 16:17:39 | 只看该作者
pecmd 给 diskpart 外壳,超级厉害,喜欢,感谢分享
回复

使用道具 举报

246#
发表于 2021-9-9 16:44:21 来自手机 | 只看该作者
窄口牛 发表于 2019-3-29 18:18
dg到现在对ext支持也不行,因为linux对磁盘就一塌糊涂。diskpart强大啥,也就是在三四个分区格式里面还行。

自己不会就不要瞎说
回复

使用道具 举报

247#
发表于 2021-9-15 21:02:49 | 只看该作者
喜欢,感谢分享
回复

使用道具 举报

248#
发表于 2021-9-25 19:47:08 | 只看该作者
给加个整数分区计算功能就完美
回复

使用道具 举报

249#
 楼主| 发表于 2021-10-23 11:27:31 | 只看该作者
本帖最后由 dos时代菜鸟 于 2021-10-23 13:11 编辑
zhxy9804 发表于 2021-9-25 19:47
给加个整数分区计算功能就完美

对于NTFS格式的硬盘分区,原理比较复杂。NTFS分区的最小容量不能精确到1MB,而是柱面大小。硬盘一般有255个磁头,63个扇区,故每个柱面的大小为:512bit*255*63=8,225,280bit=7.84423828125MB。 
如果要分个10GB的NTFS分区,理应为10*1024MB=10240MB,实际需要的柱面数10240÷7.84423828125=1305.4。因柱面只能算整数,即1306个柱面,这样实际分配的M数为
1306*7.84423828125=10244.575MB,不管小数点后面几位都进1,也就是10245MB,这样才会被Windows系统认成是10GB。

也就是说,需要有多出一点点而的空间供分区,才能实现整数,而,这个是需要做判断的,如果你要分区的区域,不能满足多出那么一点点儿,diskpart 就会分区失败。

这个如果用来制作 vhd 倒是问题不大,但是落到分区上,一些实际情况恐怕就不允许了。
弄到 自动均分 上到时可以考虑,不计算尾巴分区的整G,应该就可以,但是,自动均分这个事情,本身就有人不认同。

而且自动均分上,如果均分的数额本身就不是 整 G ,即便考虑到磁柱整数的问题,结果也不是整G,比如 给10G的空间均分成3份,总不能3+3+4 这么分呀,这就不是均分了。

回复

使用道具 举报

250#
 楼主| 发表于 2021-10-23 13:35:02 | 只看该作者
zhxy9804 发表于 2021-9-25 19:47
给加个整数分区计算功能就完美

1.25.0-2021.10.23-diskpart2x.7z (17.93 KB, 下载次数: 5)
1.25.0 2021.10.23 测试用核心脚本
用于 创建、均分 分区是 在条件允许的情况下 ,取 整G .
需要广泛测试。在 均分是,如果分区大小是 1024 5120 等之类的,应该是取整G的。手动创建分区,单个分区取整G后,如果空间允许,就取整G了,比如 10G 就会计算成 10245M 。


回复

使用道具 举报

251#
 楼主| 发表于 2021-10-23 16:35:56 | 只看该作者
本帖最后由 dos时代菜鸟 于 2021-10-23 16:37 编辑

支持 自动计算整G 分区, diskpart_shell.1.25.1.7z (1.7 MB, 下载次数: 3)

当设置分区在 1G以上, 就尝试进行 整G 计算,如果该区域有足够空间支持 的话,就整G 分。

如下图:在指定区域(该硬盘10G位置开始) 分出一个5G 分区,在资源管理器中,显示该分区 是 整整5G。




回复

使用道具 举报

252#
发表于 2021-10-23 16:58:37 | 只看该作者
很好很强大
回复

使用道具 举报

253#
发表于 2021-10-23 17:15:47 | 只看该作者
支持,顶一个。
回复

使用道具 举报

254#
 楼主| 发表于 2021-10-23 18:00:34 | 只看该作者
本帖最后由 dos时代菜鸟 于 2021-10-23 19:10 编辑

diskpart_shell.1.25.3.7z (1.7 MB, 下载次数: 1)

继续测试版,做了一些细微的调整。减少出错。

1.25.3
调整一些关于创建分区时对于数据溢出的判断,如果设置的 偏移量+Size>空间量,就提示并退出模块。
  //如果人为设置偏移量差额多余1G且分区容积不为零,尝试计算offset取整G。
  //容积为0,意为将自偏移量后的所有空间分配给这个新分区。offset如果设置取整G,后面的空间就不足整G了,
  //所以如果 容积被设置为0,就不进行offset取整G
  //如果分区指定的大小取整G计算后在未分配空间的范围内,就取整G。
回复

使用道具 举报

255#
 楼主| 发表于 2021-10-23 23:59:47 | 只看该作者
1.25.4 2021.10.23
改进了一下 创建分区模块中 关于整G 分区 的算法。
更新已经放在1楼
回复

使用道具 举报

256#
 楼主| 发表于 2021-10-24 07:47:43 | 只看该作者
1.25.41
修正创建分区时,当设置分区容量为0,而offset也被设置增加时,分区容量赋值不正确导致无法分区的问题。
此问题只有 1.25.4 存在

已经更新至1楼。
回复

使用道具 举报

257#
 楼主| 发表于 2021-10-24 11:13:21 | 只看该作者
本帖最后由 dos时代菜鸟 于 2021-10-24 11:38 编辑

关于
创建分区功能的演示和整G分区功能的检测,如图









回复

使用道具 举报

258#
 楼主| 发表于 2021-10-25 09:07:48 | 只看该作者
nttwqz 发表于 2021-6-20 21:10
已确认,就是系统变量%path%某个路径下有pecmd.exe造成,换成新版或删除后,问题解决。
鉴于PE中一般都 ...


回复

使用道具 举报

259#
 楼主| 发表于 2021-10-25 09:47:28 | 只看该作者
本帖最后由 dos时代菜鸟 于 2021-10-25 16:30 编辑

增加了一个 取消按钮。通常用不到。

1.25.51 核心脚本   diskpart2x.zip (21.1 KB, 下载次数: 2)

升级日志: updata.txt (12.54 KB, 下载次数: 2)



回复

使用道具 举报

260#
 楼主| 发表于 2021-10-26 11:17:13 | 只看该作者
用 Resource Hacker 弄了个单文件脚本内置的 版本。放在一楼了。
回复

使用道具 举报

261#
 楼主| 发表于 2021-10-26 12:50:42 | 只看该作者
脚本内置版的脚本也放到了一楼,
请用 最新版 pecmd.exe 调用,

脚本不在需要 ids.txt
回复

使用道具 举报

262#
 楼主| 发表于 2021-10-27 16:19:43 | 只看该作者
get 到了新能力,如何 把内置到 pecmd.exe 中的文本 转成变量供脚本使用

  1. getf#  #301,0#*,x
  2. CODE **-ansi,x,**-uni,x
  3. mess %X%
复制代码


就是把pecmd.exe\ExeDATA\#301 中的文本信息读取为变量 x 再mess 显示出来。
必须用GETF# 以二进制方式读取,再用 code 把 uni 转为 ansi .

回复

使用道具 举报

263#
发表于 2021-12-6 09:46:12 | 只看该作者
好东西,可惜下不了
回复

使用道具 举报

264#
 楼主| 发表于 2021-12-6 22:18:07 | 只看该作者
lxb1628 发表于 2021-12-6 09:46
好东西,可惜下不了

何出此言?
回复

使用道具 举报

265#
发表于 2021-12-19 21:34:34 | 只看该作者
谢谢楼主分享,试试看看
回复

使用道具 举报

266#
发表于 2022-1-2 21:31:18 来自手机 | 只看该作者
x64的在某些pe中一直显示开始那个貌似倒计时的对话框
回复

使用道具 举报

267#
 楼主| 发表于 2022-1-3 12:05:37 来自手机 | 只看该作者
my9823 发表于 2022-1-2 21:31
x64的在某些pe中一直显示开始那个貌似倒计时的对话框

Pe里没有DISKPART
回复

使用道具 举报

268#
 楼主| 发表于 2022-1-4 14:44:43 | 只看该作者
my9823 发表于 2022-1-2 21:31
x64的在某些pe中一直显示开始那个貌似倒计时的对话框

用这个试试吧,只是加了一个 检查 是否存在 diskpart.exe 的判断。
DiskPart_Shell_1.25.57(x64)_.7z (959.6 KB, 下载次数: 12)
回复

使用道具 举报

269#
发表于 2022-1-4 16:25:59 | 只看该作者

谢谢分享,下一个试试
回复

使用道具 举报

270#
发表于 2022-1-4 16:26:36 | 只看该作者

谢谢分享,下一个试试
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-15 09:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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