|
本帖最后由 dos时代菜鸟 于 2021-7-13 12:21 编辑
if !bit1! gtr 9 (set free11=!free:~0,-9!) else (set free11=0)
改成
if !bit1! geq 9 (set free11=!free:~0,-9!) else (set free11=0)
- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- set bit=0
- set free1=0
- set free2=0
- set n=0
- echo 找出剩余空间最大的那个分区对应的盘符
- echo --------------------------------------
- for /f "skip=1 delims=" %%c in (' wmic volume get DriveLetter^,freespace^,Label') do (
- for /f "tokens=1,2,3* delims= " %%i in ("%%c") do (
- if not "%%k"=="" (
- rem 计算当前 Freespace 数值位数
- call:x_bit %%j
-
- set free=%%j
- rem 因为 cmd 只能计算10位数 且小于 2147483647 ,所以先截取 数值后9位,存入Free22
- rem 再截取前面剩下的,如果 当前位数不足9,设置0
- set free22=!free:~-9!
- if !bit1! geq 9 (set free11=!free:~0,-9!) else (set free11=0)
-
- rem 如果当前 Freespace 数值位数比之前的大,就进一步比较
- if !bit1! geq !bit! (
- set bit=!bit1!
-
- rem 分两段比较 Free1 free2 确定当前 是否为最大。
- if !free11! geq !free1! (
- if !free11! gtr !free1! set free2=!free22!
- set free1=!free11!
- if !free22! geq !free2! (
- set free2=!free22!
- set drv=%%i
- set /a n=n+1
- )
- )
- )
- if "!drv!"=="%%i" (echo %%i !free11!,!free22! *!n! %%k) else (echo %%i !free11!,!free22! %%k)
- )
- )
- )
- echo -----------------------------------
- if not "!drv!"=="" ( echo MAX_FREE_DRV=!drv! !free1!!free2! ) ELSE (echo 没有可用分区!)
- pause
- goto :eof
- :x_bit
- rem 用于计算传递过来的 字符串参数 的字符个数。 返回变量 bit1
- set "str1=%1"
- for /l %%r in (0,1,18) do (
- if not "!str1:~%%r,1!"=="" (
- set bit1=%%r
- )
- )
- exit /b
复制代码
|
|