Windows删除空文件夹问题带来的学习与思考
https://blog.csdn.net/XavierDarkness/article/details/84785482
1、问题产生:
前段时间得到一份资源,号称有近500个G的学习资料,花了我好长时间下载下来,顺手拿了个文件查重工具查了下,发现这500个G水分很大,资料重复率很高,于是当然就会查重删除重复文件,这样导致了该文件夹下存在很多空目录,虽然不占多少空间,但是会影响观感和索引,于是决定删除空文件夹。
2、问题解决过程
问题的解决方法是多样性的,最简单粗暴的就是手动删除,但是500G的资料,天知道有多少空文件夹,显然不能手动,毕竟我这么懒。这时候就要问问 网络搜索引擎 是否有偷懒的办法。网上有说软件清理的,emmm…有点心动,但是为一些不占多少空间的空目录再去下一个几M的软件,有点不爽。于是,决定采用另一种方法,命令行。
网上大多给出了批处理bat删除空文件夹的命令。我们来简单解析一下:
@echo off
for /f "delims=" %%a in ('dir . /b /ad /s ^|sort /r' ) do rd /q "%%a" 2>nul
1
2
@echo off 不说了,关闭回显
for 命令,循环读取执行操作,下图给出简单介绍,详情可见for /?
dir . /b /ad /s,使用空格式(/b)显示指定目录(当前目录(.))和所有子目录中(/s)的文件属性(/a)为目录的文件(目录也是一种特殊的文件)。简单说就是递归列出所有目录。更多详情见 dir /?
sort /r 逆序排序。| 为管道符,将|之前的命令的输出作为之后命令的输入。这里的效果就是 逆序排列,这样子目录就会排列在前面了。
for /f "delims=" %%a in ('dir . /b /ad /s ^|sort /r') do 把结果传给for循环,依次执行do后面的命令。"delims="用于指定分隔符。因为()中是嵌套的命令,所以要用单引号’’。'dir . /b /ad /s ^|sort /r'这里的^是转义字符。
rd /q ”。rd命令默认是删除空文件夹,/q是安静模式,不要求确认。详情见rd /?。
2>nul,没找到这方面资料,推测应该与Linux的2>/dev/null同性质。2表示错误输出。参考文章《2>/dev/null和>/dev/null 2>&1和2>&1>/dev/null - 中琦2513的猿生 - CSDN博客》
for /f "delims=" %%a in ('dir . /b /ad /s ^|sort /r' ) do rd /q "%%a" 2>nul总体来说就是利用for循环挨个删除()中命令产生的目录列表中的空目录,没有回显和报错信息。
应该写的很详细了吧。批命令有个好处,就是写一次你就可以多次使用了。这个批处理是从当前目录开始查找,因此每次使用只需要把这个bat文件移动到你想要删除空目录的文件夹的根目录(注意,不用是磁盘根目录)。
批命令和命令行相差不大,最后写个命令行的:
for /f "delims=" %a in ('dir [你想要的目录] /s/b/ad ^| sort /r') do rd %a 2>nul
1
当你运行命令时,发现它没有任何反应,别紧张,它只是在读取文件列表(执行dir),可能你的文件有点多,你也可以分两步走,先用dir,将文件目录列表写入一个txt文件,再用for读取文件。
PS:在bat文件中for命令之前,你可以加个color 0A命令,这样你的输出就会绿字黑背景的,如果你文件多的话会有一种 极客 的感觉,有兴趣的话自取。
如有错误,欢迎指正。(〃‘▽’〃)
Windows删除空文件夹问题带来的学习与思考的更多相关文章
- 删除空文件夹 清除CS扩展名文件 bat
删除空文件夹.删的干净.删的彻底. 将下列代码复制到txt中保存.并把后缀.txt命成.bat.然后运行即可. 方案1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- python实现删除空文件夹 附源代码
前言:空文件夹虽然不占空间,但是有时候看着确实挺烦的(别误会,我不是强迫症!),所以写了一个用于删除当前目录下的空文件夹的小程序 环境:win7 64位:python2.7:IDE pycharm20 ...
- linux中find批量删除空文件及空文件夹
linux下批量删除空文件(大小等于0的文件)的方法 代码如下 复制代码 find . -name "*" -type f -size 0c | xargs -n 1 rm -f ...
- linux_inux中find批量删除空文件及空文件夹脚本
1.{}和之间有一个空格 2.find . -name 之间也有空格 3.exec 是一个后续的命令,{}内的内容代表前面查找出来的文件 linux下批量删除空文件(大小等于0的文件)的方法 rm - ...
- git提交空文件夹和删除远程文件
git提交空文件夹 在文件夹中创建 .gitkeep 文件,文件内容如下 # Ignore everything in this directory * # Except this file !.gi ...
- 解决Git无法同步空文件夹的问题
思路:在每个空文件夹下创建空文件,同步后再删除 package org.zln.module1.demo1; import org.apache.log4j.Logger; import java.i ...
- tomcat发布项目时,空文件夹未发布成功
问题背景: 项目发布到服务器时,缺少文件夹,到时向此文件夹写数据时发生错误. 后来经查,缺少这个文件夹,项目部署发布时,并不会把空文件夹发布上去 解决: 1.在空文件中加入,一个文件.就可以发布成功 ...
- Git提交空文件夹的技巧
这个只能说是技巧不能说是方法,原理是在每个空文件夹新建一个.gitignore文件,然后提交. 快捷命令: find . -type d -empty -exec touch {}/.gitignor ...
- git提交空文件夹目录结构
find . -name ".git" | xargs rm -Rf 在git 目录下执行find . -type d -empty -exec touch {}/.gitigno ...
随机推荐
- jQuery循环之each()
/** *定义和用法:$(selector).each(function(index,element)) *each()函数会对每个匹配到的元素运行函数(返回false可终止循环). *each()函 ...
- SQLAlchemy的常用数据类型
SQLAlchemy常用的数据类型 Column 代表数据库表中的一列 是创建对象时数据类型所依赖的对象,通过在Column对象中指明具体的数据类型来实现相应的数据库表中的列的格式自定义. Strin ...
- Linux运维技术之LVM(逻辑卷管理)
DM :逻辑设备(模块)--->LVM 优点: 个分区) 2.1.partprobe /dev/sdb : 使用partprobe可以不用重启系统即可配合fdisk工具创建新的分区 2.2.c ...
- elastic-job-lite-console后台以服务形式运行
原文:https://blog.csdn.net/u012637358/article/details/84846923 方式1:命令让程序一直在后台运行 nohup ./bin/start.sh & ...
- PAT 乙级 1002.写出这个数 C++/Java
1002 写出这个数 (20 分) 题目来源 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n ...
- python 获取当前,上级,上上级路径
import os print '***获取当前目录***' print os.getcwd() print os.path.abspath(os.path.dirname(__file__)) pr ...
- dart 中的 try on catch
catch 捕获异常 捕获了一个异常后,就停止了捕获异常过程.捕获一个异常,你就有机会去处理它: try { breedMoreLlamas(); } on OutOfLlamasException ...
- jmeter5.1企业级应用功能详解
apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性.度量被测试软件的性能.jmeter可以模拟大量的服务器负载,并且jmeter提供图形化的性能分析. JM ...
- arduino 开发视频
http://blog.uctronics.com/downloads/shields/ArduCAM_Camera_Shield_V2_DS.pdf http://www.arducam.com/k ...
- yolov2
在这篇文章中,作者首先在YOLOv1的基础上提出了改进的YOLOv2,然后提出了一种检测与分类联合训练方法,使用这种联合训练方法在COCO检测数据集(用于检测)和ImageNet分类数据集(用于分类) ...