博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批处理练手(2015-6-29 update)
阅读量:5793 次
发布时间:2019-06-18

本文共 2570 字,大约阅读时间需要 8 分钟。

hot3.png

1,打印当前目录及子目录的磁盘占用

代码如下:

@echo offecho 正在统计占用的空间……echo ========================dir|findstr /i "file(" > 1.txtfor /f "delims=) tokens=2" %%i in (1.txt) do echo 当前磁盘占用为:%%iecho ========================dir /ad /b > 2.txtfor /f "delims=]" %%a in (2.txt) do (dir "%%a"|findstr /i "file(" >> 3.txt && for /f "delims=) tokens=2" %%k in (3.txt) do echo 子目录%%a磁盘占用为:%%k && del /q 3.txt)del /q 1.txt 2.txtecho ========================pause

上面是自己写的,感觉好麻烦,而且只能查看当前目录和下一级子目录的磁盘占用,对更深的子目录不起作用。而且,个人感觉实现好臃肿,应该有更便捷的方法。

2,打印当前目录及子目录的磁盘占用(代码1-改进)

代码如下:

@echo offecho 正在计算当前目录磁盘占用……echo ===========================for /f "tokens=3,4" %%i in ('dir ^| findstr /i 个文件') do echo 当前目录磁盘占用:%%i%%jecho ===========================for /f "delims=]" %%k in ('dir /ad /b') do (for /f "tokens=3,4" %%l in ('dir "%%k"^| findstr /i 个文件') do echo 子目录%%k磁盘占用:%%l%%m)pause

这里用到了^|命令,通过^使for /f 语句中的command可以使用管道符号。这个点比较重要。

2,打印当前目录及子目录的磁盘占用(代码1-改进2)

代码如下:

@echo offecho 正在计算当前目录磁盘占用……echo ===========================for /f "tokens=3,4" %%i in ('dir ^| findstr /i 个文件') do echo 当前目录磁盘占用:%%i%%jecho ===========================for /f "delims=" %%k in ('dir /ad /b') do (for /f "tokens=3,4" %%l in ('dir "%%k"^| findstr /i 个文件') do echo 子目录%%k磁盘占用:%%l%%m)pause

扩展练习

1,显示当前目录和所有子目录的磁盘占用

@echo offecho 正在计算当前目录磁盘占用……echo ===========================for /f "tokens=3,4" %%i in ('dir ^| findstr /i 个文件') do echo 当前目录磁盘占用:%%i%%jecho ===========================for /f "delims=]" %%k in ('dir /ad /b /s') do (for /f "tokens=3,4" %%l in ('dir "%%k"^| findstr /i 个文件') do echo 子目录%%k磁盘占用:%%l%%m)pause

对比实力2,仅仅在dir命令出多了/s开关,意思是目录下的所有子目录。

2,显示当前木和所有子目录中,磁盘占用超过100M的文件

@echo offecho 正在计算当前目录磁盘占用……echo ===========================for /f "tokens=3,4" %%i in ('dir ^| findstr /i "File( 个文件"') do echo 当前目录%~dp0 磁盘占用:%%i%%jecho ===========================for /f "delims=" %%k in ('dir /ad /b /s') do (for /f "tokens=3,4" %%l in ('dir "%%k"^| findstr /i "file 个文件"') do (set xy=%%lif "!xy:,=" gtr "1024000" echo 磁盘占用大于100M的目录有:%%k,大小为%%l%%m))pause

增加if语句做条件判断,只输出大于100M的文件夹。

3,删除当前目录和子目录的空文件夹

方法1
@echo off &setlocal enabledelayedexpansionfor /f "delims=" %%i in ('dir /s /b /ad') do (dir /b "%%~i" | findstr ".">nul || rd  /s /q "%%~i")

dir /b "%%~i" | findstr "."判断目录是否有文件,如果没有文件,判定为空文件夹,执行删除rd  /s /q "%%~i",主要删除要加/s,连同子目录一起删除。

方法2
@echo off &setlocal enabledelayedexpansionfor /f "delims=" %%i in ('dir /s /ad /b') do (	for /f "tokens=3" %%j in ('dir "%%i" ^|findstr /i file') do (		set xj=%%j		if "!xj:,=!" equ "0" rd /s /q "%%i"		)	)

读取文件夹的磁盘占用,通过if语句判断磁盘占用是否为0,如果为0 ,执行删除动作。

转载于:https://my.oschina.net/snake1989/blog/469833

你可能感兴趣的文章
克服大数据集群的挑战
查看>>
PostgreSQL并发控制(MVCC, 事务,事务隔离级别)
查看>>
DM***的第二阶段OSPF
查看>>
20180702搭建青岛RAC记录
查看>>
Spring Security OAuth 实现OAuth 2.0 授权
查看>>
linux文件及简单命令学习
查看>>
dubbo源码分析-架构
查看>>
新 Terraform 提供商: Oracle OCI, Brightbox, RightScale
查看>>
6套毕业设计PPT模板拯救你的毕业答辩
查看>>
IT兄弟连 JavaWeb教程 JSP与Servlet的联系
查看>>
Windows phone 8 学习笔记
查看>>
linux并发连接数:Linux下高并发socket最大连接数所受的各种限制
查看>>
详解区块链中EOS的作用。
查看>>
我的友情链接
查看>>
mysql-error 1236
查看>>
sshd_config设置参数笔记
查看>>
循序渐进Docker(一)docker简介、安装及docker image管理
查看>>
jsp页面修改后浏览器中不生效
查看>>
大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(四)高效的后台权限判断处理...
查看>>
信号量实现进程同步
查看>>