无忧启动论坛

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

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

    [复制链接]
跳转到指定楼层
#
发表于 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, 下载次数: 267)


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, 下载次数: 117)
改进日志: 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

评分

参与人数 21无忧币 +102 收起 理由
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 很给力!

查看全部评分

来自 383#
 楼主| 发表于 2022-8-5 23:17:59 | 只看该作者
本帖最后由 dos时代菜鸟 于 2022-8-5 23:28 编辑
nttwqz 发表于 2022-8-5 22:55
就是这个,我对比了NSIS提权和不提权编译的exe文件,确实就是这点区别。

另外,我还发现了支持DPI缩放 ...
  1. <application xmlns="urn:schemas-microsoft-com:asm.v3">
  2. <windowsSettings>
  3. <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
  4. </windowsSettings>
  5. </application>
复制代码


貌似 把 true 变成 false ,就可以了

DiskPart_Shell_1.27.2-(x64.admin-2).7z (959.79 KB, 下载次数: 285)

回复

使用道具 举报

382#
发表于 昨天 20:14 | 只看该作者
本帖最后由 jlshnlhj 于 2024-5-6 10:06 编辑

谢谢回复,明白了,上面部分是disk,已经显示RO了,下面部分是分区。
回复

使用道具 举报

381#
 楼主| 发表于 昨天 17:10 | 只看该作者
本帖最后由 dos时代菜鸟 于 2024-5-5 17:11 编辑
jlshnlhj 发表于 2024-5-5 09:04
发现一个读、写显示错误,如图。
tf卡设置只读后,重新插拔一下tf卡,刷新或重新运行diskpart_shell.cmd, ...

你设置的是 磁盘 只读 而不是 分区只读,你看看你自己图里 关于 磁盘的属性是  RO.
因为 是 mbr 类分区,DISKPART 貌似不支持 对 单独分区只读设置

回复

使用道具 举报

380#
发表于 昨天 10:51 | 只看该作者
超级厉害,喜欢
回复

使用道具 举报

379#
 楼主| 发表于 2024-4-9 18:49:01 | 只看该作者
回复

使用道具 举报

378#
发表于 2023-8-16 21:49:54 | 只看该作者
本帖最后由 pda8888 于 2024-4-10 21:57 编辑
验证了一下,果然在clean和convert gpt之后,再select partition 1,可以看到一个隐藏分区,其id是 E3C9E316-0B5C-4DB8-817D-F92DF00215AE , 这个ID是Microsoft reserved类型,有15M的样子.
好像在PE下面使用diskpart,没有这个隐藏分区。
回复

使用道具 举报

377#
发表于 2023-8-13 21:57:02 | 只看该作者
dos时代菜鸟 发表于 2023-8-13 16:08
gpt 会有 一个特殊分区。

哦,原来如此,学习了。
回复

使用道具 举报

376#
 楼主| 发表于 2023-8-13 16:08:59 | 只看该作者
pda8888 发表于 2023-8-13 14:55
想请教楼主大神:

这其中的第4、5行:

gpt 会有 一个特殊分区。

点评

哦,原来如此,学习了。  详情 回复 发表于 2023-8-13 21:57
回复

使用道具 举报

375#
发表于 2023-8-13 14:55:38 | 只看该作者
想请教楼主大神:
  1. Select Disk 1
  2. clean
  3. convert gpt
  4. SELECT PART 1
  5. DELETE PART OVERRIDE
  6. CREATE PART MSR SIZE=128
  7. Create part efi size=320
  8. format fs=FAT label="EFI_Boot" quick
  9. assign
  10. Create part PRIMARY size=383888
  11. format fs=NTFS LABEL="1" QUICK
  12. ASSIGN
  13. Create part PRIMARY size=383888
  14. format fs=NTFS LABEL="2" QUICK
  15. ASSIGN
  16. Create part PRIMARY size=383888
  17. format fs=NTFS LABEL="3" QUICK
  18. ASSIGN
  19. Create part PRIMARY
  20. format fs=NTFS LABEL="4" QUICK
  21. ASSIGN
复制代码

这其中的第4、5行:
  1. SELECT PART 1
  2. DELETE PART OVERRIDE
复制代码

有存在的必要吗?对于一个刚刚执行了clean命令初始化过后的啥也没有的盘来说,根本就没有任何分区啊。

点评

gpt 会有 一个特殊分区。  详情 回复 发表于 2023-8-13 16:08
回复

使用道具 举报

374#
发表于 2023-8-13 14:48:19 | 只看该作者
2000多行啊,牛B!
回复

使用道具 举报

373#
发表于 2023-4-26 11:14:56 | 只看该作者
感谢分享
回复

使用道具 举报

372#
发表于 2023-4-23 20:56:13 | 只看该作者
谢谢分享,下一个试试。
回复

使用道具 举报

371#
发表于 2023-4-21 15:33:29 | 只看该作者
感谢分享
回复

使用道具 举报

370#
发表于 2023-4-5 08:21:30 来自手机 | 只看该作者
dos时代菜鸟 发表于 2023-4-5 07:05
如果众多命令流中有一条是错误的,是否影响后继运行?

不影响。
回复

使用道具 举报

369#
 楼主| 发表于 2023-4-5 07:05:28 来自手机 | 只看该作者
datbik189 发表于 2023-4-4 15:27
最近测试了下, 好像cmd.exe和diskpart.exe支持发送多行的指令的全家桶, 并成功运行. 测试成功的原因, 难道 ...

如果众多命令流中有一条是错误的,是否影响后继运行?

点评

不影响。  详情 回复 发表于 2023-4-5 08:21
回复

使用道具 举报

368#
发表于 2023-4-4 15:27:59 | 只看该作者
最近测试了下, 好像cmd.exe和diskpart.exe支持发送多行的指令的全家桶, 并成功运行. 测试成功的原因, 难道是我的指令太简单了???

点评

如果众多命令流中有一条是错误的,是否影响后继运行?  详情 回复 发表于 2023-4-5 07:05
回复

使用道具 举报

367#
发表于 2023-3-15 05:30:08 | 只看该作者
厉害了
回复

使用道具 举报

366#
发表于 2023-3-5 17:40:36 | 只看该作者
学习学习
回复

使用道具 举报

365#
 楼主| 发表于 2023-2-23 06:43:15 来自手机 | 只看该作者
microlaf 发表于 2023-2-22 22:00
pe下只要有diskpart.exe和这个wcs脚本就行了吧

需要新版pecmd2012和id数据文本。
回复

使用道具 举报

364#
发表于 2023-2-22 22:00:02 | 只看该作者
pe下只要有diskpart.exe和这个wcs脚本就行了吧

点评

需要新版pecmd2012和id数据文本。  详情 回复 发表于 2023-2-23 06:43
回复

使用道具 举报

363#
发表于 2023-1-12 20:06:23 | 只看该作者
十分强!!
回复

使用道具 举报

362#
发表于 2022-12-29 07:15:42 | 只看该作者
感谢分享
回复

使用道具 举报

361#
发表于 2022-12-7 16:59:10 | 只看该作者
datbik189 发表于 2022-12-7 16:55
cmd和diskpart一样,只支持单行命令, 多行命令得使用脚本文件.

了解,看来还是得一步步来
回复

使用道具 举报

360#
发表于 2022-12-7 16:58:20 | 只看该作者
dos时代菜鸟 发表于 2022-12-7 16:40
我感觉应该是 diskpart 命令解析要求 一行一行的执行。
你用 ENVI. 联合 \n  做一个 多行变量,再用 for ...

那没事了,我以为你跟我一样,是一次性发个全家桶过去。
回复

使用道具 举报

359#
发表于 2022-12-7 16:55:18 | 只看该作者
527104427 发表于 2022-12-7 16:00
还是有问题:

select disk 5%nl%detail disk%nl%san%nl%select vdisk file="D:\doc\desktop\动态磁    ...

cmd和diskpart一样,只支持单行命令, 多行命令得使用脚本文件.

点评

了解,看来还是得一步步来  详情 回复 发表于 2022-12-7 16:59
回复

使用道具 举报

358#
 楼主| 发表于 2022-12-7 16:40:18 | 只看该作者
本帖最后由 dos时代菜鸟 于 2022-12-7 16:48 编辑
527104427 发表于 2022-12-7 16:31
并不是noerr和空格的问题。
应该是命令长度有限制。

我感觉应该是 diskpart 命令解析要求 一行一行的执行。
你用 ENVI. 联合 \n  做一个 多行变量,再用 forx 逐行发过去看看。

我这边弄了个 超长中文带多个空格的vhd 名字,用脚本一样能正常加载和卸载。

用 envi.  带 .


点评

那没事了,我以为你跟我一样,是一次性发个全家桶过去。  详情 回复 发表于 2022-12-7 16:58
回复

使用道具 举报

357#
发表于 2022-12-7 16:31:50 | 只看该作者
dos时代菜鸟 发表于 2022-12-7 16:15
是因为有空格 ,还是 有 noerr ?

noerr 是只有 脚本中采用的,如果直接发指令,不用这个参数。

并不是noerr和空格的问题。
应该是命令长度有限制。

点评

我感觉应该是 diskpart 命令解析要求 一行一行的执行。 你用 ENVI. 联合 \n 做一个 多行变量,再用 forx 逐行发过去看看。  详情 回复 发表于 2022-12-7 16:40
回复

使用道具 举报

356#
 楼主| 发表于 2022-12-7 16:15:01 | 只看该作者
本帖最后由 dos时代菜鸟 于 2022-12-7 16:25 编辑
527104427 发表于 2022-12-7 16:00
还是有问题:

select disk 5%nl%detail disk%nl%san%nl%select vdisk file="D:\doc\desktop\动态磁    ...

是因为有空格 ,还是 有 noerr ?

noerr 是只有 脚本中采用的,如果直接发指令,不用这个参数。

可以 用 envi. 做一个多行变量 ,我都是用 \n 做回车,不用 %NL%.

而且,确实需要 逐行发送指令,需要 时刻关注 输出结果,判断指令是否已经运行完了。


点评

并不是noerr和空格的问题。 应该是命令长度有限制。  详情 回复 发表于 2022-12-7 16:31
回复

使用道具 举报

355#
发表于 2022-12-7 16:00:56 | 只看该作者
dos时代菜鸟 发表于 2022-12-7 15:14
已经更新放在一楼

感谢诸位老大,不然我都要考虑 用探测是否存在中文字符,然后 用 diskpart /s 实现带 ...

还是有问题:

select disk 5%nl%detail disk%nl%san%nl%select vdisk file="D:\doc\desktop\动态磁   盘转换成普通  磁盘,有无效分区.vhd" noerr%nl%detail vdisk%nl%

把以上代码一次性发过去,会被截断一部分,造成报错,提示找不到vhd。
只能先发送一行,成功再继续下一行。

点评

cmd和diskpart一样,只支持单行命令, 多行命令得使用脚本文件.  详情 回复 发表于 2022-12-7 16:55
是因为有空格 ,还是 有 noerr ? noerr 是只有 脚本中采用的,如果直接发指令,不用这个参数。  详情 回复 发表于 2022-12-7 16:15
回复

使用道具 举报

354#
 楼主| 发表于 2022-12-7 15:14:37 | 只看该作者
已经更新放在一楼

感谢诸位老大,不然我都要考虑 用探测是否存在中文字符,然后 用 diskpart /s 实现带中文的指令了。

点评

还是有问题: select disk 5%nl%detail disk%nl%san%nl%select vdisk file="D:\doc\desktop\动态磁 盘转换成普通 磁盘,有无效分区.vhd" noerr%nl%detail vdisk%nl% 把以上代码一次性发过去,会被截断一部  详情 回复 发表于 2022-12-7 16:00
回复

使用道具 举报

353#
 楼主| 发表于 2022-12-7 14:15:56 | 只看该作者
527104427 发表于 2022-12-7 00:14
已搞定,见楼上代码



回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-6 16:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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