无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 青青草
打印 上一主题 下一主题

批处理系列6:查找剩余空间最大的磁盘盘符(终稿)

    [复制链接]
跳转到指定楼层
1#
发表于 2021-7-2 11:46:11 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 青青草 于 2021-7-25 10:48 编辑

现在的硬盘都是大容量,需考虑批处理计算时受到位数的限制,故再次更新如下:

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set zero=0000000000000000000000000000000000000000
  4. set size=!zero!1
  5. for /f "tokens=1-3" %%a in ('wmic logicaldisk where "DriveType='3'" get freespace^,name^,size^|find ":"')do (
  6.     for /f "tokens=1,2,3 delims= " %%i in ("%%c") do (
  7. set space=%%a
  8. set free=!zero!!space!
  9. if "!free:~-40!" gtr "!size:~-40!" (
  10. set  size=!free:~-40!
  11. set maxdisk=%%b
  12. set mb=!space!
  13. )
  14. echo 分区%%b   大小:%%c 字节     剩余 !space! 字节
  15. )
  16. )
  17. echo 硬盘剩余最大: 分区 !maxdisk!     剩余: %mb% 字节
  18. pause
复制代码
      利用字符串比较,较好地解决了批处理计算时受位数限制问题,代码较为简洁。位数预设了40位,应该足够了。
      虽然位数预设了40位,足够用了,但总感觉缺点什么;对了,预设40位,还是受到限制,代码不够通用。故修改如下:
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set maxn=0
  4. set size=0
  5. for /f "tokens=1-3" %%a in ('wmic logicaldisk where "DriveType='3'" get freespace^,name^,size^|find ":"')do (
  6.         set space=%%a
  7.          call :Length space n
  8.               if !n! gtr !maxn! (
  9.                    set  maxn=!n!
  10.                    set  size=!space!
  11.                    set maxdisk=%%b
  12.                )
  13.               if "!n!" EQU "!maxn!" (
  14.                   if "!space!" gtr "!size!" (
  15.                      set  size=!space!
  16.                      set maxdisk=%%b
  17.                    )               
  18.                )
  19. echo 分区%%b   大小:%%c 字节     剩余 !space! 字节
  20. )
  21. echo 硬盘剩余最大: 分区 !maxdisk!     剩余: %size% 字节
  22. pause

  23. :Length
  24. setlocal enabledelayedexpansion
  25. set "$=!%1!#"
  26. set "len="&for %%a in (4096 2048 1024 256 128 64 32 16 8 4 2 1) do (if "!$:~%%a,1!" NEQ "" set/a len+=%%a&set "$=!$:~%%a!" &if "!$:~1!"=="" goto ok)
  27. set "s=!s!fedcba9876543210" &set/a "len+=0x!s:~16,1!"
  28. :ok
  29. endlocal&set/a "%2=%len%"
  30. goto:eof
复制代码







2021-07-16 (2).png (10.7 KB, 下载次数: 127)

2021-07-16 (2).png
2#
 楼主| 发表于 2021-7-2 12:18:26 | 显示全部楼层
bfgxp 发表于 2021-7-2 12:10
不错,以前一直想要这么一个脚本,虽然后来我用au3实现了。
还是喜欢批处理的直接。

回复

使用道具 举报

3#
 楼主| 发表于 2021-7-4 14:59:50 | 显示全部楼层

剩余空间的大小显示不准确。
回复

使用道具 举报

4#
 楼主| 发表于 2021-7-4 18:11:13 | 显示全部楼层
bfgxp 发表于 2021-7-2 12:10
不错,以前一直想要这么一个脚本,虽然后来我用au3实现了。
还是喜欢批处理的直接。

已更新,显示剩余空间容量更精确!
回复

使用道具 举报

5#
 楼主| 发表于 2021-7-5 09:45:02 | 显示全部楼层
ESD 发表于 2021-7-2 17:05
这个代码连setlocal ENABLEDELAYEDEXPANSION都没有加上,你发出来作甚呢?

这么简单的事情,谁不会?自己加上不就得了。
回复

使用道具 举报

6#
 楼主| 发表于 2021-7-5 21:23:55 | 显示全部楼层
610644034 发表于 2021-7-5 21:03
批处理实现起来没有压力啊!

回复

使用道具 举报

7#
 楼主| 发表于 2021-7-15 20:21:06 | 显示全部楼层
plusv 发表于 2021-7-15 18:28
807979023> 加格式和卷名后,xp  win7x32  win7x64 测试通过,win10x64失败。

我于 Windows XP/Window ...

已再次更新代码,麻烦你测试一下。
谢谢!

点评

测试通过,由于截图保存在e盘,所以e盘剩余字节依次减少。 c盘是win7x32,win7x64安装后放在c盘一个文件夹中,需要时与根目录系统交换位置。 d盘是winxp,h盘是win10x64,启动后盘符为c,原c盘被隐藏。 所以都是  详情 回复 发表于 2021-7-16 09:10
我 12 年老 PC, Windows 7 X64 : 主系统. Windows XP(在 VMWare 中) : 测试软件. Windows 10 PE(在 VMWare 中) : 测试软件. Windows 10 (一台小 NoteBook 中) : 没什么在用,一个月开机一次. 批处理在 Windows  详情 回复 发表于 2021-7-16 01:45
回复

使用道具 举报

8#
 楼主| 发表于 2021-7-16 10:31:39 | 显示全部楼层
nttwqz 发表于 2021-7-14 14:30
dfp /drives /b
貌似是8.1系统独有命令,复制到10下可用

谢谢!
回复

使用道具 举报

9#
 楼主| 发表于 2021-7-16 10:36:28 | 显示全部楼层
plusv 发表于 2021-7-16 01:45
我 12 年老 PC,
Windows 7 X64 : 主系统.
Windows XP(在 VMWare 中) : 测试软件.

谢谢!
在我的系统Windows 10和Windows10PE中测试也均正常。
回复

使用道具 举报

10#
 楼主| 发表于 2021-7-16 10:37:40 | 显示全部楼层
本帖最后由 青青草 于 2021-7-16 10:39 编辑
807979023 发表于 2021-7-16 09:10
测试通过,由于截图保存在e盘,所以e盘剩余字节依次减少。
c盘是win7x32,win7x64安装后放在c盘一个文件 ...

谢谢!利用字符串比较,解决了位数限制问题,代码较为简洁。
回复

使用道具 举报

11#
 楼主| 发表于 2021-7-16 10:40:10 | 显示全部楼层
junyee 发表于 2021-7-16 09:45
同是脚本语言和 bash 一比,cmd.exe 就是弱鸡。

ps 学习成本略高,而且老系统不一定有,版本多,有不兼 ...

回复

使用道具 举报

12#
 楼主| 发表于 2021-7-16 10:40:34 | 显示全部楼层
回复

使用道具 举报

13#
 楼主| 发表于 2021-7-16 10:41:15 | 显示全部楼层
回复

使用道具 举报

14#
 楼主| 发表于 2021-7-25 10:53:35 | 显示全部楼层

已更新!
回复

使用道具 举报

15#
 楼主| 发表于 2021-7-25 10:54:05 | 显示全部楼层
回复

使用道具 举报

16#
 楼主| 发表于 2021-7-25 10:54:16 | 显示全部楼层
nianyueriPE 发表于 2021-7-24 15:30
挺好用的,正需要。

已更新!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-6 06:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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