本帖最后由 yakeyun 于 2021-7-15 14:52 编辑
- @echo off
- 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
- pause
复制代码 已知代码获取到的值如下:

========================================================================
下面是第二个代码,主要是找出新硬盘,如果可用容量和总容量相等,就说明有硬盘没有分区出来。其已经可以实现自动判断小于500G硬盘分一个区,大于500G平分3个区的目的了。
但是diskpart命令无法获取磁盘容量后面的小数位,所以均分容量有瑕疵,想完美优化一下代码。求大佬帮忙看下是否可以把代码和代码之间相互调用,自己尝试加过,技术有限不能实现。
我是先让%%k输出为data.ini ,然后用:for /f "delims=" %%m in ('more "c:\data.ini" ^| find "%%b"') do echo,%%m 运行后m值不显示

========================================================================- :main
- 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
- set name=%%a
- set name2=%%b
- )
- )
- if !flag!==1 (
- if !name2! GTR 500 (goto bug500)
- if !name2! LSS 500 (goto min500)
- :bug500
- set /a name2=!name2!*1024/3
- set /a name3=!name2!*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:!name3!
- 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:!name2!
- C:\Intel\10\PACMD\partassist.exe /hd:%name% /cre /pri /size:auto /fs:ntfs /label:HDD3 /letter:auto
- msg %username% "自动分区完成!"
- 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:HDD /letter:auto
- msg %username% "自动分区完成!"
- goto main
- )
复制代码
|