[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 8# CrLf
这里显示的和右键一致
不清楚楼主是否要显示子目录 如显示子目录 dir 加参数 /s

TOP

回复 7# terse


    dir 显示的是不含子目录的大小吧

TOP

回复 4# wang5185244
纯p效率够不
  1. @echo off&setlocal enabledelayedexpansion
  2. set m=1048576
  3. (for /f "tokens=*" %%i in ('dir /ad /b') do (
  4.     set size=000
  5.     for /f "eol=0tokens=3" %%j in ('dir /s/a/-c "%%i" 2^>nul^| findstr /i "个文件.*字节$"') do set "size=%%j00"
  6.     if !size! geq 102400 (
  7.        if !size! geq 104857600 (
  8.           set s=MB
  9.           set t=!size!
  10.           set len=!t:~9!98765432100
  11.           set /alen=9+!len:~10,1!
  12.           set/a "r=!t:~,8!%%m,size=!t:~,8!/m"
  13.           for /l %%j in (8 1 !len!) do (
  14.               set/a "q=!r!!t:~%%j,1!/m,r=!r!!t:~%%j,1!%%m"
  15.               set "size=!size!!q!"
  16.           )
  17.           if !size! geq 102400 set s=GB&set /asize/=1024
  18.        ) else set s=KB&set /asize/=1024
  19.     ) else set s=Byte
  20.     echo %%i !size:~,-2!.!size:~-2! !s!
  21. ))>DIR_.TXT
  22. start "" DIR_.TXT
复制代码

TOP

个人喜欢用 SpaceSniffer 查看目录大小,直观、方便,可惜好像没有命令行下的代替工具

TOP

回复 4# wang5185244
加个判断试试呢
系统文件夹还是权限不够
  1. @if(0)==(0) echo off
  2. CScript.exe /NoLogo /E:JScript %0 >_dir.txt
  3. pause & exit
  4. @end
  5. var n=1024,m=1048576,fso=new ActiveXObject("Scripting.FileSystemObject");
  6. var Folder=fso.GetFolder(WScript.Arguments.Count()?WScript.Arguments.Item(0):".");
  7. for(var e=new Enumerator(Folder.SubFolders);!e.atEnd();e.moveNext()){
  8.    var f=e.item();
  9.    if (f.Name!='System Volume Information') {
  10.      if(!(f.attributes%2)){
  11.        var Size=f.size;
  12.        switch(true){
  13.           case Size<n :
  14.              var s = Size + ' Byte';
  15.              break;
  16.           case Size<m :
  17.              var s = (Size/n).toFixed(2) + ' KB';
  18.              break;   
  19.           default :
  20.              var s = (Size/m).toFixed(2) + ' MB';
  21.        }
  22.        WScript.Echo(f.Name+'\t' + s);
  23.      }
  24.    }
  25. }
复制代码

TOP

回复 3# terse


大神,运行出现这错误,什么原因啊~怎么输出结果

TOP

  1. @if(0)==(0) echo off
  2. CScript.exe /NoLogo /E:JScript %0
  3. pause & exit
  4. @end
  5. var n=1024,m=1048576,fso=new ActiveXObject("Scripting.FileSystemObject");
  6. var Folder=fso.GetFolder(WScript.Arguments.Count()?WScript.Arguments.Item(0):".");
  7. for(var e=new Enumerator(Folder.SubFolders);!e.atEnd();e.moveNext()){
  8.    var f=e.item();
  9.    var Size=f.Size;
  10.    switch(true){
  11.       case Size<n :
  12.          WScript.Echo(f.Name,'\t' + Size,' Byte');
  13.          break;
  14.       case Size<m :
  15.           WScript.Echo(f.Name,'\t' + (Size/n).toFixed(2),' KB');
  16.           break;   
  17.       default :
  18.           WScript.Echo(f.Name,'\t' + (Size/m).toFixed(2),' MB');
  19.    }
  20. }
复制代码

TOP

这个用 vbs 比较快:
  1. http://bbs.bathome.net/viewthread.php?tid=25682
复制代码

TOP

返回列表