|
|
楼主 |
发表于 2021-7-15 15:16:46
|
显示全部楼层
本帖最后由 yakeyun 于 2021-11-6 10:14 编辑
回复 9# newswan
折腾了几天,总算完美解决,容量可以均分。下面是代码:
@echo off
:main
::清理战场
@IF exist data.ini (del data.ini)
@IF exist data0.ini (del data0.ini)
@IF exist 1.txt (del 1.txt)
@IF exist name2.txt (del name2.txt)
C:\Intel\10\PACMD\partassist.exe /list /out:1.txt
for /f "skip=3 delims=| tokens=2,3" %%i in (1.txt) do for /f " delims=GB" %%k in ("%%i") do echo %%k >>data.ini
setlocal enabledelayedexpansion
set flag=0
for /f "skip=1 tokens=2,4-7" %%a in ('echo list disk^|diskpart^|find "磁盘"') do if "%%b%%c" == "%%d%%e" (
set flag=1
::============================================
for /f " delims=" %%q in ("%%a") do echo %%q >data0.ini
for /f %%r in ('type "data0.ini"') do echo %%r &set name=%%r
::============================================
set GB=%%b
for /f "delims=" %%m in ('more "data.ini" ^| find "%%b"') do echo,%%m >name2.txt
for /f %%x in ('type "name2.txt"') do echo %%x &set name2=%%x
)
)
if !flag!==1 (
::下面的200是指要比较的硬盘容量大小,可以根据需要修改,作者的是小于500G全部分一个区,大于500G均分三个区。
if %name2% GTR 200 (goto bug500)
if %name2% LSS 200 (goto min500)
:bug500
::=======================================
for /f "delims=. tokens=1,2" %%d in ('echo,%name2%') do (
set a11=%%d
set a22=%%e
set /a a1=a11*1024/3
set /a a2=a22*1024/3
)
for /f "delims=. tokens=1,*" %%k in ('echo %a2:~0,-2%') do (
set b1=%%k
set /a name3=a1+b1
set /a name4=name3*2
)
::=======================================
::删除所有分区
C:\Intel\10\PACMD\partassist.exe /hd:%name% /del:all
::初始化磁盘
C:\Intel\10\PACMD\partassist.exe /init:%name% /gpt
::在磁盘的第一块未分配空间中创建1T的三分之一容量分区
C:\Intel\10\PACMD\partassist.exe /hd:%name% /cre /pri /size:auto /fs:ntfs /align /label:HDD1 /letter:auto
C:\Intel\10\PACMD\partassist.exe /hd:%name% /resize:0 /reduce-right:!name4!
C:\Intel\10\PACMD\partassist.exe /hd:%name% /cre /pri /size:auto /fs:ntfs /label:HDD2 /letter:auto
C:\Intel\10\PACMD\partassist.exe /hd:%name% /resize:1 /reduce-right:!name3!
C:\Intel\10\PACMD\partassist.exe /hd:%name% /cre /pri /size:auto /fs:ntfs /label:HDD3 /letter:auto
goto main
:min500
::删除所有分区
C:\Intel\10\PACMD\partassist.exe /hd:%name% /del:all
::初始化磁盘
C:\Intel\10\PACMD\partassist.exe /init:%name% /gpt
::将磁盘所有空间分配为一个分区
C:\Intel\10\PACMD\partassist.exe /hd:%name% /cre /pri /size:auto /fs:ntfs /align /label:SSD /letter:auto
goto main
)
msg %username% "自动分区完成!"
::清理战场
@IF exist data.ini (del data.ini)
@IF exist data0.ini (del data0.ini)
@IF exist 1.txt (del 1.txt)
@IF exist name2.txt (del name2.txt)
exit
最终分区效果,小于200G自动分一个区,大于200G分3个区。如果有多个未分区的新硬盘,会循环判断,直到不存在未分区的硬盘为止。

软件打包下载:https://www.lanzoui.com/iuDYnrfypja |
|