无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 6412|回复: 11
打印 上一主题 下一主题

[求助] 批处理如何获取剩余空间最大的分区

[复制链接]
跳转到指定楼层
1#
发表于 2020-9-5 22:22:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

比如只有一块硬盘,5个分区,如何获取剩余空间最大的分区盘符
2#
发表于 2020-9-6 10:46:13 来自手机 | 只看该作者
一种是fsutil,速度快,单位字节
一种是diskpart,速度慢,单位是大小而定
一种是wmic,PE一般没有这个组件。

点评

fsutil、diskpart、wmic三个组件pe中均有,也能获取各分区剩余空间,但自动获取剩余空间最大的分区盘符不会写  详情 回复 发表于 2020-9-6 12:19
回复

使用道具 举报

3#
 楼主| 发表于 2020-9-6 12:19:04 | 只看该作者
nttwqz 发表于 2020-9-6 10:46
一种是fsutil,速度快,单位字节
一种是diskpart,速度慢,单位是大小而定
一种是wmic,PE一般没有这个组 ...

fsutil、diskpart、wmic三个组件pe中均有,也能获取各分区剩余空间,但自动获取剩余空间最大的分区盘符不会写
回复

使用道具 举报

4#
发表于 2020-9-6 15:31:13 | 只看该作者
本帖最后由 9zhmke 于 2020-9-6 15:35 编辑

fsutil快就用fsutil吧:

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1*" %%i in ('fsutil fsinfo drives') do set drv=%%j
  4. set tmp=%drv:\=%
  5. set drv=%tmp: =%
  6. echo %drv%
  7. set free=0
  8. set max=C
  9. :LOOP
  10. for /f "tokens=1* delims=:" %%i in ("%drv%") do (
  11.         fsutil volume diskfree %%i:
  12.         for /f "tokens=2* delims=:" %%d in ('fsutil volume diskfree %%i:') do set last=%%d
  13.         set last=!last:~0,-6!
  14.         if !free! leq !last! echo ok& set max=%%i& set free=!last!
  15.         set drv=%%j)
  16. if defined drv goto LOOP
复制代码


不能上传bat,txt改为bat即可: test.txt (522 Bytes, 下载次数: 8) 其实我想说用VBS轻松很多的,考虑到有可能PE环境还是忍住了

点评

谢谢回复 在pe下常用imagex和dism,我要给它们设置临时文件夹,想在剩余空间最大的分区设置,所以需要一个获取剩余空间最大的分区盘符的代码 我的pe有vbs功能,你能否写一个vbs脚本来获取剩余空间最大的分区盘  详情 回复 发表于 2020-9-7 00:41
回复

使用道具 举报

5#
 楼主| 发表于 2020-9-7 00:41:23 | 只看该作者
9zhmke 发表于 2020-9-6 15:31
fsutil快就用fsutil吧:

谢谢回复

在pe下常用imagex和dism,我要给它们设置临时文件夹,想在剩余空间最大的分区设置,所以需要一个获取剩余空间最大的分区盘符的代码

我的pe有vbs功能,你能否写一个vbs脚本来获取剩余空间最大的分区盘符

点评

这个应该可以用吧? 能用就不必另写一套了吧? 关于临时文件夹,我倒是认为可以从C开始查看,只要能有你需要的空间就可以了,不必把每个分区都看一遍.比如常见的装系统什么的,有个1个G左右怎么也就够用了.  详情 回复 发表于 2020-9-7 16:07
回复

使用道具 举报

6#
发表于 2020-9-7 16:07:07 | 只看该作者
yjqd 发表于 2020-9-7 00:41
谢谢回复

在pe下常用imagex和dism,我要给它们设置临时文件夹,想在剩余空间最大的分区设置,所以需要 ...

这个应该可以用吧? 能用就不必另写一套了吧?
关于临时文件夹,我倒是认为可以从C开始查看,只要能有你需要的空间就可以了,不必把每个分区都看一遍.比如常见的装系统什么的,有个1个G左右怎么也就够用了.

点评

能用,准确,谢谢  详情 回复 发表于 2020-9-7 18:21
回复

使用道具 举报

7#
 楼主| 发表于 2020-9-7 18:21:42 | 只看该作者
9zhmke 发表于 2020-9-7 16:07
这个应该可以用吧? 能用就不必另写一套了吧?
关于临时文件夹,我倒是认为可以从C开始查看,只要能有 ...

能用,准确,谢谢
回复

使用道具 举报

8#
发表于 2020-9-22 15:05:02 | 只看该作者
一般来说都是fsutil最快!
回复

使用道具 举报

9#
发表于 2020-9-23 20:37:57 | 只看该作者
本帖最后由 dos时代菜鸟 于 2020-9-23 20:59 编辑

这是用 wmic 实现的。win10 桌面环境下测试通过


get_free.7z (428 Bytes, 下载次数: 3)

因为以字节做单位,数据在 cmd 下会溢出,所以,要设置位数= 5.
又因为 wmic 在 cmd 下输出 会有 回车符参与文本流,所以,用了二次 for 来规避之。


  1. @echo off
  2. setlocal  ENABLEDELAYEDEXPANSION
  3. set free=0
  4. set bit=5

  5. echo Drv,Free,max_free
  6. for /f  "skip=1 delims=" %%c in (' wmic volume get Driveletter^,freespace') do (
  7.     for /f "tokens=1,2 delims= " %%i in ("%%c") do (
  8.         if not "%%j"=="" (
  9.             set free2=%%j
  10.             set free_x=!free2:~0,-%bit%!
  11.             if !free_x! gtr !free! (
  12.                 set max_d=%%i
  13.                 set free=!free_x!
  14.                 set free.=!free2:~-%bit%!
  15.             )
  16.         echo %%i %%j !free!!free.!
  17.         )
  18.     )
  19. )
  20. echo.
  21. if not "!max_d!"=="" ( echo MAX_FREE_DRV=!MAX_D!) ELSE (echo 没有可用分区!)

  22. pause
复制代码

点评

谢谢 pe下获取盘符速度还是很快的且准确  详情 回复 发表于 2020-9-28 15:55
回复

使用道具 举报

10#
 楼主| 发表于 2020-9-28 15:55:53 | 只看该作者
dos时代菜鸟 发表于 2020-9-23 20:37
这是用 wmic 实现的。win10 桌面环境下测试通过

谢谢

pe下获取盘符速度还是很快的且准确
回复

使用道具 举报

11#
发表于 2020-10-18 15:44:36 | 只看该作者
  1. @echo off & setlocal enabledelayedexpansion
  2. set "zero=00000000000000000000"
  3. set "maxfree=%zero%"
  4. for %%a in (C,D,E,F,G) do (
  5.     for /f "tokens=3" %%b in ('dir /a /-c %%a:\') do set "free=%zero%%%b"
  6.     if "!free:~-20!" gtr "!maxfree!" (
  7.         set "maxfree=!free:~-20!"
  8.         set "letter=%%a"
  9.     )
  10. )
  11. echo,%letter% %maxfree%
  12. pause
复制代码
回复

使用道具 举报

12#
发表于 2020-10-18 16:54:30 | 只看该作者
收藏一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-19 21:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表