标题: [文件操作] [已解决]以MB显示容量的批处理是怎样避免超出set /a的计算范围? [打印本页]
作者: bingxing8000 时间: 2011-9-26 09:46 标题: [已解决]以MB显示容量的批处理是怎样避免超出set /a的计算范围?
本帖最后由 pcl_test 于 2016-12-7 21:51 编辑
在以兆显示容量的大小时碰到一下情况
在网上搜了一下了,说DOS计算有范围的。现在硬盘的容量都很大,基本上以字节来计算,都超过了DOS的计算范围。
在论坛找到一下代码- @echo off
- setlocal enabledelayedexpansion
- set /a num2=1024*1024
- set total=0
- for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
- set num1=0
- set num3_str=
- set num4=
- for /f "tokens=3" %%j in ('dir /-c %%i:\ 2^>nul') do (
- set num1=%%j
- )
- if not "!num1!"=="0" (
- call :loop
- for /f "delims=0 tokens=*" %%k in ("!num3_str!") do (
- set num3_str=%%k
- )
- echo.
- echo %%i 盘剩余空间为 !num3_str! MB
- set /a total+=!num3_str!
- echo.
- )
- )
- echo 剩余空间总量为 !total! MB
- pause
- goto :eof
-
- :loop
- :: 求商
- set /a num3=%num4%%num1:~0,1%/%num2%
- :: 求商序列
- set num3_str=%num3_str%%num3%
- :: 求余
- set /a num4=%num4%%num1:~0,1%%%%num2%
- if %num4% equ 0 (
- set num4=
- )
- set num1=%num1:~1%
- if not "%num1%"=="" (
- goto :loop
- )
- goto :eof
复制代码
确实可以实现,以兆显示容量
但是却不是用的什么原理,避免了DOS的计算范围?
作者: garyng 时间: 2011-9-26 20:51
字符分隔,再合并~
作者: bingxing8000 时间: 2011-9-26 22:18
字符分隔,再合并~
garyng 发表于 2011-9-26 20:51
谢谢你的回答。
能再详细点吗?
作者: garyng 时间: 2011-9-27 18:58
回复 3# bingxing8000
找找论坛吧~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |