磁盘分区显示与隐藏的bat命令行批处理脚本
@ECHO OFF
Title 磁盘分区显示与隐藏工具 (支持MBR和GPT)
mode con lines=36 cols=74
color 1f
setlocal enabledelayedexpansion
:: 设置临时目录
set "TEMPDIR=%TEMP%\DiskPartTool"
if not exist "%TEMPDIR%" mkdir "%TEMPDIR%"
:: 获取管理员权限
>NUL 2>&1 REG.exe query "HKU\S-1-5-19" || (
ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMPDIR%\Getadmin.vbs"
ECHO UAC.ShellExecute "%~f0", "%*", "", "runas", 1 >> "%TEMPDIR%\Getadmin.vbs"
CSCRIPT //Nologo "%TEMPDIR%\Getadmin.vbs"
DEL /f /q "%TEMPDIR%\Getadmin.vbs" 2>NUL
Exit /B
)
:MAIN_MENU
cls
echo.
echo 当前磁盘列表:
echo list disk > "%TEMPDIR%\DiskPart.txt"
echo exit >> "%TEMPDIR%\DiskPart.txt"
diskpart /s "%TEMPDIR%\DiskPart.txt" | find /v "Copyright" | find /v "DiskPart" | find /v "计算机上" | find /v "退出" > "%TEMPDIR%\DiskList.txt"
:: 显示磁盘列表(过滤无关行)
type "%TEMPDIR%\DiskList.txt"
:GET_DISK_NUMBER
echo.
set "choiceDisk="
set /p "choiceDisk=请输入要操作的磁盘编号:"
if not defined choiceDisk goto GET_DISK_NUMBER
:: 检查输入是否全为数字
set "isValid=1"
for /f "delims=0123456789" %%c in ("%choiceDisk%") do set "isValid=0"
if "%isValid%"=="0" (
echo 错误:请输入有效的数字!
goto GET_DISK_NUMBER
)
:: 检查磁盘是否存在
set "diskFound=0"
for /f "tokens=1,2,3,4,5,6,7,8*" %%a in ('type "%TEMPDIR%\DiskList.txt"') do (
if "%%a"=="磁盘" (
set "diskNum=%%b"
if "!diskNum!"=="%choiceDisk%" (
set "diskFound=1"
if "%%h"=="*" (
set "isGPT=1"
) else (
set "isGPT=0"
)
)
)
)
if "%diskFound%"=="0" (
echo 错误:磁盘 %choiceDisk% 不存在!
goto GET_DISK_NUMBER
)
:: 获取分区列表
echo select disk %choiceDisk% > "%TEMPDIR%\DiskPart.txt"
echo list partition >> "%TEMPDIR%\DiskPart.txt"
echo exit >> "%TEMPDIR%\DiskPart.txt"
diskpart /s "%TEMPDIR%\DiskPart.txt"
:GET_PARTITION_NUMBER
echo.
set /p "partitionNum=请输入要操作的分区编号:"
if not defined partitionNum goto GET_PARTITION_NUMBER
:: 检查输入是否全为数字
set "isValid=1"
for /f "delims=0123456789" %%c in ("%partitionNum%") do set "isValid=0"
if "%isValid%"=="0" (
echo 错误:请输入有效的数字!
goto GET_PARTITION_NUMBER
)
if "%isGPT%"=="1" (