- 帖子
- 1013
- 积分
- 1228
- 技术
- 14
- 捐助
- 0
- 注册时间
- 2019-2-20
|
[系统相关] [已解决]如何在批处理中使用diskpart命令,删除特定卷标的分区
本帖最后由 5i365 于 2021-8-8 17:14 编辑
本人平时删除分区时, 很少使用其它的第三方软件, 都是在PE的磁盘管理下, 使用右键删除分区, 但最近, 非常想尝试一下使用批处理代码来自动删除分区, 看看效果如何, 如果能实现, 以后删分区的操作相对而言就更简单了,改成特定卷标就行了,例如,将要删除分区的卷标改为no,批处理执行后相关的分区就删除了
因为要在PE下使用, 而PE下不能执行wmic命令, 所以只能使用diskpart命令, 具体描述如下:
---先判断WIN分区在哪个硬盘,得到硬盘号!因为是在PE下,Win系统的盘符有可能不为C,所以不能通过盘符做判断, 可以根据分区下是否有windows\system32文件夹判断 【只处理包含window系统的硬盘, 其它的硬盘即使有卷标为no的分区, 也不做处理 】
---删除卷标为no的分区,可能有一个或多个, 而卷标不为no的分区则保留
【根据卷标得出盘符,
然后sel volume=盘符如C 没有冒号:
最后del volume noerr】
---如果该硬盘中有ESP系统引导分区, 即使卷标不是no, 也删除它 【最下面输出信息中 type 为 system 的分区 是esp分区】
---如果该硬盘中有MSR保留分区, 即使卷标不是no, 也删除它 【最下面输出信息中 type 为 Reserved 的分区 是MSR保留分区】
---如果该硬盘中有恢复分区, 即使卷标不是no, 也删除它, 【最下面输出信息中 type 为 Recovery 的分区 是恢复分区】
如果没找到卷标为no的分区, 则弹出下面消息框, 点确定后, 脚本直接退出
start mshta vbscript:msgbox("No partition no was found",0,"tip")(window.close)&&exit
上面几种情况的判断, 应该要根据分区的类型来添加限定条件, 相关代码参考链接:
http://www.bathome.net/redirect. ... 9390&pid=242338
感谢几位大侠所推荐的无忧论坛的专门针对diskpart而写的脚本工具,虽然也可以实现效果, 但是操作步骤感觉不太简单明了, 代码量也非常多, 想自行修改下, 但能力有限, 实在吃不消
另外,还有不少磁盘软件, 如diskgnius, 傲梅助手等, 都可以实现我要的效果, 但是不在此贴的讨论范围, 感觉还是系统内置的工具来的直接
期待诸位高手, 尽量能用最少的代码, 实现上面功能, 那将非常震撼, 提前感谢!
下面是完整的手动删除分区操作步骤:
提醒:
为了让代码中英文系统兼容性更好,最好在批处理代码最前面加上chcp 437 切换到英文,这样会输出英文信息,就像最下面的输出信息那样
________________________________________________________________________________
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Administrator>chcp 437
Active code page: 437
X:\Users\Administrator>diskpart
Microsoft DiskPart version 10.0.19041.1
Copyright (C) Microsoft Corporation.
On computer: Winpe
DISKPART> sel disk 1
Disk 1 is now the selected disk.
DISKPART> detail disk
TOSHIBA MK1655GSX USB Device
Disk ID: {AA01743D-F6E3-11EB-8FB7-08107649E626}
Type : USB
Status : Online
Path : 0
Target : 0
LUN ID : 0
Location Path : UNAVAILABLE
Current Read-only State : No
Read-only : No
Boot Disk : No
Pagefile Disk : No
Hibernation File Disk : No
Crashdump Disk : No
Clustered Disk : No
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 3 F no NTFS Partition 39 GB Healthy
Volume 4 G soft NTFS Partition 20 GB Healthy
Volume 5 H data NTFS Partition 60 GB Healthy
Volume 6 I RAW Partition 10 GB Healthy
Volume 7 NTFS Partition 19 GB Healthy Hidden
Volume 8 FAT32 Partition 300 MB Healthy Hidden
DISKPART> list part
Partition ### Type Size Offset
------------- ---------------- ------- -------
Partition 1 System 300 MB 1024 KB
Partition 2 Reserved 16 MB 301 MB
Partition 3 Primary 39 GB 317 MB
Partition 4 Primary 20 GB 39 GB
Partition 5 Primary 60 GB 59 GB
Partition 6 Recovery 10 GB 119 GB
Partition 7 Primary 19 GB 129 GB
DISKPART> sel part 1
Partition 1 is now the selected partition.
DISKPART> del part override
DiskPart successfully deleted the selected partition.
DISKPART> sel part 2
Partition 2 is now the selected partition.
DISKPART> del part override
DiskPart successfully deleted the selected partition.
DISKPART> sel part 3
Partition 3 is now the selected partition.
DISKPART> del part override
DiskPart successfully deleted the selected partition.
DISKPART> sel part 6
Partition 6 is now the selected partition.
DISKPART> del part override
DiskPart successfully deleted the selected partition.
|
|