|
|
@echo off
setlocal enabledelayedexpansion
:: 设置目标磁盘编号(请根据实际情况修改)
set DISK_NUMBER=1
:: 临时文件路径
set SCRIPT=%TEMP%\diskpart_script.txt
set OUTPUT=%TEMP%\disk_info.txt
:: 第一步:获取磁盘总容量(MB)
echo 获取磁盘 %DISK_NUMBER% 的信息...
echo list disk > "%SCRIPT%"
diskpart /s "%SCRIPT%" > "%OUTPUT%"
:: 解析磁盘容量(假设输出格式如:Disk 1 Online 512000 MB ...)
for /f "tokens=1-4" %%a in ('type "%OUTPUT%" ^| findstr /r /c:"^ *Disk %DISK_NUMBER% "') do (
set TOTAL_MB=%%d
)
:: 检查是否成功读取容量
if not defined TOTAL_MB (
echo 错误:无法获取磁盘 %DISK_NUMBER% 的容量。请确认磁盘存在且未被占用。
pause
exit /b 1
)
:: 去掉可能的逗号(某些系统输出带千位分隔符)
set TOTAL_MB=%TOTAL_MB:,=%
echo 磁盘 %DISK_NUMBER% 总容量:%TOTAL_MB% MB
:: 计算各分区大小(整数,向下取整)
set /a P1_SIZE = TOTAL_MB * 30 / 100
set /a P2_SIZE = TOTAL_MB * 20 / 100
set /a P3_SIZE = TOTAL_MB * 20 / 100
set /a P4_SIZE = TOTAL_MB - P1_SIZE - P2_SIZE - P3_SIZE
:: 确保第四个分区至少有 100 MB(防止因取整导致为0)
if %P4_SIZE% LSS 100 (
echo 警告:剩余空间过小,调整第四个分区为最小值 100 MB。
set /a P4_SIZE = 100
:: 可选:重新分配或报错,此处简化处理
)
echo 分区计划:
echo 分区1: %P1_SIZE% MB (约30%%)
echo 分区2: %P2_SIZE% MB (约20%%)
echo 分区3: %P3_SIZE% MB (约20%%)
echo 分区4: %P4_SIZE% MB (剩余)
:: 构建 diskpart 脚本
echo select disk %DISK_NUMBER% > "%SCRIPT%"
echo clean >> "%SCRIPT%"
echo create partition primary size=%P1_SIZE% >> "%SCRIPT%"
echo format fs=ntfs quick label="Part1" >> "%SCRIPT%"
echo assign >> "%SCRIPT%"
echo create partition primary size=%P2_SIZE% >> "%SCRIPT%"
echo format fs=ntfs quick label="Part2" >> "%SCRIPT%"
echo assign >> "%SCRIPT%"
echo create partition primary size=%P3_SIZE% >> "%SCRIPT%"
echo format fs=ntfs quick label="Part3" >> "%SCRIPT%"
echo assign >> "%SCRIPT%"
echo create partition primary size=%P4_SIZE% >> "%SCRIPT%"
echo format fs=ntfs quick label="Part4" >> "%SCRIPT%"
echo assign >> "%SCRIPT%"
:: 执行分区
echo.
echo 开始对磁盘 %DISK_NUMBER% 进行分区...
diskpart /s "%SCRIPT%"
:: 清理临时文件
del "%SCRIPT%" "%OUTPUT%" 2>nul
echo.
echo 分区操作完成!
pause |
|