本帖最后由 5i365 于 2021-8-8 07:49 编辑
回复 12# idwma
用下面的第二种方法的代码,也能实现和第一种方法代码相同的效果, 代码少了点, 但是和第一方法相比, 没有了 【只处理Win系统分区所在的硬盘】的代码, 把所有硬盘上的分区都处理了 看来还是得在第一种方法的代码上改
另外,第二种方法中,将第二行[setlocal enabledelayedexpansion]注释掉也能成功执行,
目前的问题 就一个了, 不能删除多个卷标为no的分区, 只能删第一个
——————————————————————————————————————————————————————————————
方法二代码:
@echo off
::setlocal enabledelayedexpansion
chcp 437
echo list vol|diskpart|findstr /i "volume.*no" &&set f=1
if not defined f start mshta vbscript:msgbox("not find no vol",0,"tip")(window.close)&&exit
for /f "tokens=2,3 delims= " %%a in ('echo list vol^|diskpart^|findstr /i "volume.*no"') do (
if exist %%b:\windows\system32 (
(echo select volume %%a
echo delete volume)|diskpart
for /f "tokens=2 delims=* " %%c in ('^(echo sel vol %%a ^&echo list part^)^|diskpart^|findstr /i "system Reserved Recovery"') do (
(echo select volume %%a
echo sel part %%c
echo del part override)|diskpart
)
)
)
pause
——————————————————————————————————————————————————————————————
方法一代码:
@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 |