Board logo

标题: [文本处理] [已解决]批处理查看文件大小的字节怎样转换成KB和MB? [打印本页]

作者: wh1234567    时间: 2011-5-22 14:43     标题: [已解决]批处理查看文件大小的字节怎样转换成KB和MB?

批处理代码:
  1. @echo off
  2. for /f "tokens=* delims=" %%a in ('dir /s /b "ForBruteIp.txt"') do (set T=%%~za)
  3. echo 文件大小为:%T%KB
  4. pause
复制代码
这个批处理实际显示的是Byte字节而不是KB,请问如何修改成显示的是KB和MB呢?
也就是
echo 文件大小为:%T%KB
echo 文件大小为:%T%MB
作者: CrLf    时间: 2011-5-22 14:52

本帖最后由 zm900612 于 2011-5-22 21:31 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in ("ForBruteIp.txt") do (
  3.    set /a k=%%~za/1024,m=k/1024
  4.    echo 文件大小为:!k!KB !m!MB
  5. )
  6. pause
复制代码
顺便说一句,楼主好像没吧代码用[@code][@/code](去掉@)框起来
作者: wh1234567    时间: 2011-5-22 21:05

本帖最后由 wh1234567 于 2011-5-22 21:10 编辑

要求不将echo这个括号,你这代码不符合要求,再说这个代码无效果啊,兄弟,再修改一下吧
要求:以下代码在括号外面的,而不是被括号包括的
echo 文件大小为:%T%KB
echo 文件大小为:%T%MB
作者: CrLf    时间: 2011-5-22 21:31

把set 改成set/a就行了,已修正。
放在括号外不严谨,可能会丢失信息。
作者: wh1234567    时间: 2011-5-22 21:53

把set 改成set/a就行了,已修正。
放在括号外不严谨,可能会丢失信息。
zm900612 发表于 2011-5-22 21:31

要求不将echo这个括号,你这代码不符合要求,再说这个代码无效果啊,兄弟,再修改一下吧
要求:以下代码在括号外面的,而不是被括号包括的
echo 文件大小为:%T%KB
echo 文件大小为:%T%MB
wh1234567 发表于 2011-5-22 21:05
修改后也还是不对!
作者: batman    时间: 2011-5-23 00:06

头痛的浮点计算,还是调用vbs吧:
  1. @echo off
  2. if "%1" neq "" goto next
  3. for %%a in (ForBruteIp.txt) do set "k=%%~za"
  4. mshta vbscript:createobject("wscript.shell").run("%~fs0 "^&round(%k%/1024,4)^&" "^&round(%k%/1024/1024,4))(window.close)
  5. goto :eof
  6. :next
  7. setlocal enabledelayedexpansion
  8. set "k1=%1"&set "k2=%2"
  9. for %%a in (k1 k2) do if "!%%a:~,1!" equ "." set %%a=0!%%a!
  10. echo 文件大小为%k1%kb %k2%M
  11. pause>nul
复制代码

作者: wh1234567    时间: 2011-5-23 00:48

本帖最后由 wh1234567 于 2011-5-23 01:13 编辑

能不能修改成查看的文件如果是KB的就显示KB,如果是MB的就显示MB,如果是字节的就显示的是字节,就像电脑里其他文件鼠标点击查看的那种效果?
另外反馈一下,要是改成小数点后为2位的话好像计算的不够准确
作者: wh1234567    时间: 2011-5-23 00:52

能用bat处理是最好不过了,呵呵




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2