本帖最后由 523066680 于 2014-8-28 17:46 编辑
以前写过一个挺繁琐的脚本,列出当前子目录大小,可以通过编号选择
进入某个目录继续列举进一层的目录大小。我用来辅助寻找较大的目录。可能有些不精准的地方吧- ::Show Each Folder Size with Percent
- :: via 523066680, 2013-08
- ::维护记录:
- ::1、文件夹名称里存在"%"时被脱逸而导致的错误
- ::2、截取的一兆以上的Size进行*1000000/(1024*1024)
- ::3、输入open 或者open 编号,打开当前或者对应目录
-
- @echo off
- setlocal enabledelayedexpansion
- set "back= "
- for /l %%a in (1,1,8) do (
- set back=!back!!back!
- )
- echo 注:以下统计仅为数值截取的大致结果。
-
- :start
- echo 当前目录:"%cd%"
- for /f "tokens=1" %%a in ('dir /ad ^|find "个目录"') do (
- set all=%%a
- )
- if "%all%"=="2" (echo 没有子目录,返回上一层 &cd .. &goto :input)
-
- ::关键变量初始化
- set /a i=0, Si[0]=0
-
- ::逐个调用
- for /f "tokens=*" %%a in ('dir /ad /b') do (
- set TPath=%%a
- call :deal
- )
-
- call :ShowDetail
- pause
- exit
-
- :deal
- set /a i+=1, ia=i-1, ix=i*100/all
- set /p inp=!back!%ix%%% "!TPath!" <nul
-
- for /f "tokens=3" %%a in ('dir /a /-c /s "!TPath!" ^|find " 个文件"') do (
- set bytes=000000000000%%a
- set bytes=!bytes:~-12!
- set MB=%%a
- )
- if "%MB:~6%"=="" (
- set MB= ^<1
- ) else (
- set /a RealMB=!MB:~0,-6!*1000/1024*1000/1024
- set MB= !RealMB!
- )
- rem 对齐
- set MB=!MB:~-6!
-
-
- rem 插入排序
- for /l %%a in (%ia%,-1,0) do (
- set /a A2=%%a+1
- if !bytes! lss !Si[%%a]! (
- set Si[!A2!]=!Si[%%a]!
- set Sj[!A2!]=!Sj[%%a]!
- set Sk[!A2!]=!Sk[%%a]!
- ) else (
- set Si[!A2!]=!bytes!
- set Sj[!A2!]=!TPath!
- set Sk[!A2!]=!MB!
- goto :Out
- )
- )
- :Out
- goto :eof
-
- :ShowDetail
- set /p inp=%back%<nul
- for /l %%a in (1,1,%i%) do (
- echo %%a !Sk[%%a]! MB !Sj[%%a]!
- )
- echo,
- :input
- set "input="
- set /p input=进入某目录请输入对应编号(exit退出):
- if "%input%"=="exit" (exit)
- if "%input%"=="prev" (cd .. &goto :start)
- if "%input:~0,4%"=="open" (
- if "%input:~4%"=="" (
- start explorer "%cd%"
- ) else (
- if defined Sj[%input:~5%] (
- start explorer "!Sj[%input:~5%]!"
- ) else (
- echo 请输入正确的编号
- )
- )
- goto :input
- )
- if not defined Si[%input%] (
- echo 输入错误
- goto :input
- ) else (
- set next=!Sj[%input%]!
- )
- cd %next%
- goto :start
复制代码 示例目录 Dev-Cpp ,过程中带简单的扫描进度显示:
───────────┐
当前目录:"D:\Dev-Cpp"│
23% "Help" │
───────────┘
────────────────────┐
│
注:以下统计仅为数值截取的大致结果。 │
当前目录:"D:\Dev-Cpp" │
1 <1 MB Packages │
2 <1 MB Templates │
3 <1 MB Examples │
4 <1 MB Icons │
5 <1 MB Lang │
6 <1 MB Help │
7 1 MB mingw32 │
8 5 MB include │
9 7 MB libexec │
10 10 MB bin │
11 21 MB lib │
│
进入某目录请输入对应编号(exit退出):11 │
当前目录:"D:\Dev-Cpp\lib" │
1 <1 MB gcc │
2 5 MB debug │
│
进入某目录请输入对应编号(exit退出): │
────────────────────┘ |