[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 5i365 于 2021-8-8 15:13 编辑

回复 26# idwma


    刚试了一下, 误删了一个卷标不是no的分区, 留下了一个卷标是no分区

TOP

回复 26# idwma


现在问题是不稳定, 有时可以正确删除, 有时就不行, 比如下面的分区情况:

_______________________________________________________________________
删除前硬盘分区信息:

    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 0

Disk 0 is now the selected disk.

DISKPART> list part

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    System            1027 MB  1024 KB
  Partition 2    Primary             20 GB  1028 MB
  Partition 3    Primary             20 GB    21 GB
  Partition 4    Primary             20 GB    41 GB
  Partition 5    Primary             20 GB    61 GB
  Partition 6    Recovery            20 GB    81 GB
  Partition 9    Reserved            20 GB   101 GB
  Partition 10   Primary             59 GB   121 GB
  Partition 7    Unknown             36 GB   181 GB
  Partition 8    Unknown             13 GB   217 GB

DISKPART> detail disk

Hitachi HDP725025GLA380
Disk ID: {33E8B399-451F-43F3-BB00-A1116C0B80AE}
Type   : SATA
Status : Online
Path   : 0
Target : 0
LUN ID : 0
Location Path : PCIROOT(0)#PCI(1F02)#ATA(C00T00L00)
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 0     C   no           NTFS   Partition     20 GB  Healthy
  Volume 1     D   no           NTFS   Partition     20 GB  Healthy
  Volume 2     E   data         NTFS   Partition     20 GB  Healthy
  Volume 3     F   no           NTFS   Partition     20 GB  Healthy
  Volume 4     G                RAW    Partition     20 GB  Healthy
  Volume 5     H   soft         NTFS   Partition     59 GB  Healthy
  Volume 6                      FAT32  Partition   1027 MB  Healthy    Hidden

DISKPART> list vol

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     C   no           NTFS   Partition     20 GB  Healthy
  Volume 1     D   no           NTFS   Partition     20 GB  Healthy
  Volume 2     E   data         NTFS   Partition     20 GB  Healthy
  Volume 3     F   no           NTFS   Partition     20 GB  Healthy
  Volume 4     G                RAW    Partition     20 GB  Healthy
  Volume 5     H   soft         NTFS   Partition     59 GB  Healthy
  Volume 6                      FAT32  Partition   1027 MB  Healthy    Hidden

_________________________________________________________________
删除后硬盘分区信息:
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 0

Disk 0 is now the selected disk.

DISKPART> list part

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 4    Primary             20 GB    41 GB
  Partition 5    Primary             20 GB    61 GB
  Partition 7    Unknown             36 GB   181 GB
  Partition 8    Unknown             13 GB   217 GB

DISKPART> detail disk

Hitachi HDP725025GLA380
Disk ID: {33E8B399-451F-43F3-BB00-A1116C0B80AE}
Type   : SATA
Status : Online
Path   : 0
Target : 0
LUN ID : 0
Location Path : PCIROOT(0)#PCI(1F02)#ATA(C00T00L00)
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 0     E   data         NTFS   Partition     20 GB  Healthy
  Volume 1     F   no           NTFS   Partition     20 GB  Healthy

DISKPART>

TOP

回复 26# idwma

又试了一下上面的新代码,

现在情况,卷标为no的分区都删了, 但是 esp分区, msr分区,rec分区,没有删

TOP

回复 30# idwma

感谢, 测了多次了, 感觉这回没问题了, 但是还没有试多块硬盘时什么情况,

现在的方法,好像没有最开始   方法一代码中   的开头几行判断多个硬盘的部分,下面是原来的方法一代码

方法一代码:
@echo off&setlocal enabledelayedexpansion
chcp 437
for /f "delims=" %%i in ('^(echo list disk ^)^|diskpart^|find "Online"') do set/a n+=1
        set/a n=!n!-1
        for /l %%i in (0,1,!n!) do ((echo select disk %%i
&echo detail disk)|diskpart|findstr /i "volume.*no" &&set f=%%i)
                if not defined f start mshta vbscript:msgbox("not find no",0,"tip")(window.close)&&exit
                for /l %%i in (0,1,!n!) do (
                        for /f "tokens=2,3 delims= " %%a in ('^(echo select disk %%i ^&echo detail disk^)^|diskpart^|findstr /i "volume.*no"') do (
                                if exist %%b:\windows\system32 (
                                        (echo select disk %%i
                                        echo select volume %%a
                                        echo delete volume)|diskpart
                                        for /f "tokens=2 delims= " %%c in ('^(echo select disk %%i ^&echo list part^)^|diskpart^|findstr /i "system Reserved Recovery"') do (
                                                if not "%%c"=="" (
                                                (echo sel disk %%i
                                                echo sel part %%c
                                                echo del part override)|diskpart)
                                        )
                                )
                        )
                )
pause

TOP

另外, 感觉上面的方法一的代码, 执行速度快

能否在方法一代码的基础上改一下?

TOP

回复 34# idwma

哦, 我在无忧看到过一种方式删分区, 非常快, 几乎是秒删的

原理大概是, 先把获取硬盘信息, 然后根据要求生成要删除的代码, 之后定向到外部文件, 然后用用下面方法执行这个文件
diskpart /s 生成的删除代码文件

TOP

回复 35# idwma


    对 是硬盘0的意思, 就是备份硬盘0的分区表

TOP

回复 35# idwma

备份分区表的代码, 应该是备份要操作的硬盘, 有可能是 硬盘0 或1 或2 , 所以放在最开始, 无法知道硬盘号, 行不通

另外, 因为只处理包含卷标no的分区, 且包含windows系统的硬盘, 所以感觉还是方法一代码那个合适

TOP

回复 39# idwma


    第三行,的备份分区表代码, 要操作的硬盘号,还不知道, 因为在PE下也有可能是硬盘1或2,
如果用方法一的代码, 我认为应该将备份分区表代码放下面的位置

方法一代码:
@echo off&setlocal enabledelayedexpansion
chcp 437
for /f "delims=" %%i in ('^(echo list disk ^)^|diskpart^|find "Online"') do set/a n+=1
        set/a n=!n!-1
        for /l %%i in (0,1,!n!) do ((echo select disk %%i &echo detail disk)|diskpart|findstr /i "volume.*no" &&set f=%%i)
                if not defined f start mshta vbscript:msgbox("not find no",0,"tip")(window.close)&&exit
                for /l %%i in (0,1,!n!) do (
                        for /f "tokens=2,3 delims= " %%a in ('^(echo select disk %%i ^&echo detail disk^)^|diskpart^|findstr /i "volume.*no"') do (
                                if exist %%b:\windows\system32 (
                                              BOOTICE /DEVICE=硬盘号 /mbr /backup /sectors=1 /quiet /file=MBR_Bak
                                        (echo select disk %%i
                                        echo select volume %%a
                                        echo delete volume)|diskpart
                                        for /f "tokens=2 delims= " %%c in ('^(echo select disk %%i ^&echo list part^)^|diskpart^|findstr /i "system Reserved Recovery"') do (
                                                if not "%%c"=="" (
                                                (echo sel disk %%i
                                                echo sel part %%c
                                                echo del part override)|diskpart)
                                        )
                                )
                        )
                )
pause

TOP

回复 39# idwma


    测试过了, 没有遇到问题, 速度也快了, 感觉代码还可以精简  


备份硬盘分区表, 那个硬盘参数, 要改, 能否使用方法1的代码改一下呢?

TOP

回复 43# newswan


    感谢指点, 感觉在PE下分配盘符,有时不太可靠,目前还是感觉分区号稳点

TOP

本帖最后由 5i365 于 2021-8-9 10:22 编辑

回复 38# idwma

第五行代码的中文部分,在使用chcp 437后,会显示乱码, 有办法显示中文吗:?
if not defined f start mshta vbscript:msgbox("没找到卷标为no的分区",0,"%提醒%")(window.close)&&exit

找到一文章,但不知道修改
https://www.cnblogs.com/tsoukw/archive/2010/10/20/1856497.html
______________________________________________________________________
另外还有一个问题,
第32行, 回显硬盘号,后面会有一个空格,怎样在开始获取硬盘号的地方,删除空格?
例如:
echo %no_yph%abc
输出的结果是0 abc

TOP

本帖最后由 5i365 于 2021-8-9 19:44 编辑

回复 46# idwma

第14-20行
for /f "tokens=2 delims= " %%c in ('^(echo select disk %disk% ^&echo list part^)^|diskpart^|findstr /i "System Reserved Recovery"') do (
        if not "%%c"=="" (
                (echo sel disk %disk%
                echo sel part %%c
                echo del part override)>>dsk.txt
        )
)

你好,大侠,能增强一下上面几行代码的功能吗? 改成类似下面的,用分区类型的ID来表示的形式,这样我如果想删除其它系统下的某分区类型的分区,就直接在后加分区类型的ID就可以了,这样功能就没强大多了
for /f "tokens=2 delims= " %%c in ('^(echo select disk %disk% ^&echo list part^)^|diskpart^|findstr /i "C12A7328-F81F-11D2-BA4B-00A0C93EC93B DE94BBA4-06D1-4D40-A16A-BFD50179D6AC E3C9E316-0B5C-4DB8-817D-F92DF00215AE 其它系统下分区类型的ID"')

★★★需要增强的原因是:

所有windows相关的分区类型,因为本身就是微软的东西, 他们都有英文名字, 像System、 Reserved、 Recovery
但是更多的其它系统,像苹果系统,linux等系统下的分区类型,却没有名字,统一显示为Unknown
但好在,每种分区类型,在分区的详情中都有一串字符ID来表示这种类型,例如:查看一个 system类型分区的详情,里面有下面的内容
Type: C12A7328-F81F-11D2-BA4B-00A0C93EC93B

Windows下的一些分区,英文类型名字和其ID的对应关系如下
system
C12A7328-F81F-11D2-BA4B-00A0C93EC93B

recovery
DE94BBA4-06D1-4D40-A16A-BFD50179D6AC

reserved
E3C9E316-0B5C-4DB8-817D-F92DF00215AE
_______________________________________________________
附获取分区类型详情的步骤:

Active code page: 437

C:\Users\Administrator>diskpart

Microsoft DiskPart version 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: WIN

DISKPART> sel disk 0

Disk 0 is now the selected disk.

DISKPART> list part

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    System            1027 MB  1024 KB
  Partition 2    Primary             80 GB  1028 MB
  Partition 3    Primary            112 GB    81 GB
  Partition 4    Primary             29 GB   193 GB

DISKPART> sel part 1

Partition 1 is now the selected partition.

DISKPART> detail part

Partition 1
Type    : c12a7328-f81f-11d2-ba4b-00a0c93ec93b
Hidden  : Yes
Required: No
Attrib  : 0X8000000000000000
Offset in Bytes: 1048576

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
* Volume 3         EFI          FAT32  Partition   1027 MB  Healthy    System

DISKPART>

TOP

回复 48# idwma


    感谢快速回复, 我有时间再测试一下, 有问题会来反馈

TOP

返回列表