我的编程空间,编程开发者的网络收藏夹
学习永远不晚

bat中如何定时删除一个文件夹内的所有子文件夹和文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

bat中如何定时删除一个文件夹内的所有子文件夹和文件

这篇文章将为大家详细讲解有关bat中如何定时删除一个文件夹内的所有子文件夹和文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在win9x的年代,用deltree这个外部命令就很容解决这个问题,不过从windows 2000 及windows xp之后,就取消了这个命令(真的是很奇怪),那么现在怎么解决呢?大家可能想到用 del+rd来解决这个问题。但有个问题,就是rd命令会删除您指定的目录。例如,当前目录结构如下:
D:\>attrib /s /d d:\test\*.*
A    R  I    D:\test\1.txt          此文件带有只读属性
A   H   I    D:\test\2.txt          此文件带有隐藏属性
A  S    I    D:\test\3.txt          此文件带有系统属性
     H   I    D:\test1\1             此目录带有隐藏属性
A    R  I    D:\test\1\4.txt       此文件带有只读属性
    S    I    D:\test1\2             此目录带有系统属性
A    R  I    D:\test1\2\5.txt     此文件带有只读属性

批处理原理 如果您这么执行命令 rd d:\test,那么rd会将test这个目录连同其中的内容一起删除掉,而我们要保留test这个目录。那么怎么办呢?我们可以先用del把d:\test目录下的文件删除掉,然后再用rd把子目录删除掉。这个批处理的内容如下,大家将如下内容保存为后缀名为.bat 或者.cmd的文本文件,例如就叫 deltree.bat吧。
---不包含此行---
attrib -s -h -r %1\*.* && del %1\*.* /q
dir %1 /ad /b /s >del.txt 
for /f %%i in (del.txt) do rd %%i /s /q 
---不包含此行---
那么当我们需要删除test目录的时候,就这么执行 "deltree.bat d:\test"(不包含引号)。

批处理第一行 第一行批处理中的%1就会读取批处理参数,变成这样 attrib -s -h -r d:\test\*.* && del d:\test\*.* /q
先用attrib 去掉test目录下所有文件的属性,以保障后面的del顺利执行。
&& 是连接符号,当执行完前面的命令后,执行连接符后面的命令。
del删除 test目录下所有文件,因为rd命令是无法删除test目录下的文件的。好,test下的文件删除完了,我们就开始删除test目录下的子目录。

批处理第二行 批处理执行到第二行,%1读取批处理参数,就是我们在deltree后面输入的的 d:\test,变成这样 dir d:\test /ad /b /s >del.txt 这里dir命令后的各参数含义如下:
 /AD          显示具有指定属性的目录。从而让后面的rd命令删除这些目录
/B          使用空格式(没有标题信息或摘要)。避免后面的删除命令出错,因为dir命令还会输出一些其它信息,例如“ 驱动器 C 中的卷没有标签。 卷的序列号是 EE5B-D3AF”,显然这会导致rd命令出错。
/S          显示指定目录和所有子目录中的文件。输出目录及文件的完整路径,便于后面rd命令删除。
执行完这一行批处理后,在当前目录下会产生 del.txt文件,您执行 type del.txt,会看到如下输出:
d:\test1\1
d:\test1\2
为什么要输出到文本文件呢?为什么不直接把dir的结果输出给rd呢?因为dir的结果会有多行,如果一行一行写,不是太麻烦了吗?而且将来实际运用批处理的时候,我们也无法预测目标文件夹下会有多少个子目录。将dir结果输出到文本文件,然后让rd去读不是很方便吗?

批处理第三行 好,我们已经将要删除的子目录列表输出到文本文件del.txt中了,只要使用rd命令删除这些目录就好了。但实际上rd本身没有读取文本文件的功能,我们用for来解决这个问题。批处理执行到了最后一行:for /f %%i in (del.txt) do rd %%i /s /q 
%%i是在for语句中使用的循环变量,这个变量每使用一次,就从 del.txt中读取一行,作为变量值,然后for负责将这个变量传递给后面 do执行的命令中,那么for依次执行循环所形成的命令就是这样的:
第一次循环 rd d:\test1\1 /s /q
第二次循环 rd d:\test1\2 /s /q
gnaw0725注:关于for循环的更多解释请参考 https://www.yisu.com/article/31284.htm
这里的rd参数含义如下:
/S      除目录本身外,还将删除指定目录下的所有子目录和文件。用于删除目录树。
/Q      安静模式,带 /S 删除目录树时不要求确认

故障排查 好,到此位置,deltree.bat这个批处理就删除了d:\test下的所有文件和文件夹,而无论它们带什么属性。如果大家在使用这个批处理的过程中出现了问题,例如没有删除掉文件,那么如何进行故障排查呢?我们可以有两个check point:
批处理参数获取 就是考察批处理是否正确获取了参数,也就是我们输入的目标文件夹,我们可以在批处理的最前面加一个echo %1 ,看看结果,就是这样:
echo %1
attrib -s -h -r %1\*.* && del %1\*.* /q
gnaw0725注:批处理可以有9个参数,%0代表批处理自己,第一个参数%1,第二个%2,……依此类推
子目录输出列表 就是del.txt,您可以输入 type del.txt,如果正常,输出的内容应该是d:\test下的所有子目录。

编程网小编补充:

其实删除文件与文件夹的命令用rd更简单与粗暴,具体的可以可以参考下面的命令:

rd /s /q f:\ddd

关于“bat中如何定时删除一个文件夹内的所有子文件夹和文件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

bat中如何定时删除一个文件夹内的所有子文件夹和文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

bat中如何定时删除一个文件夹内的所有子文件夹和文件

这篇文章将为大家详细讲解有关bat中如何定时删除一个文件夹内的所有子文件夹和文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在win9x的年代,用deltree这个外部命令就很容解决这个问题,不过从wi
2023-06-08

bat怎么延时删除指定文件夹中文件

这篇文章主要为大家展示了“bat怎么延时删除指定文件夹中文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“bat怎么延时删除指定文件夹中文件”这篇文章吧。一、bat延时xp程序中通过ping 1
2023-06-08

centos如何删除文件夹下所有文件

要删除CentOS上文件夹下的所有文件,您可以使用以下命令:1. 使用`cd`命令进入要删除文件的文件夹:```cd /path/to/folder```请将`/path/to/folder`替换为您要删除文件的文件夹的实际路径。2. 使用
2023-08-20

ubuntu如何删除文件夹下所有文件

要删除Ubuntu中文件夹下的所有文件,可以使用以下命令:1. 打开终端。2. 使用cd命令进入要删除文件的文件夹所在的目录。例如,如果要删除名为"folder"的文件夹中的所有文件,则可以使用以下命令:```cd /path/to/fol
2023-09-15

如何用php删除文件夹下的某个子文件夹

本文小编为大家详细介绍“如何用php删除文件夹下的某个子文件夹”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何用php删除文件夹下的某个子文件夹”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。删除文件夹下的子文
2023-07-05

如何删除临时Internet文件文件夹中的内容

要删除临时Internet文件夹中的内容,请按照以下步骤进行操作:1. 首先,打开文件资源管理器。可以通过按下Win + E组合键或在开始菜单中选择“文件资源管理器”打开。2. 在文件资源管理器中,导航到以下路径:C:\Users\Your
2023-09-08

GitLab中如何删除一个文件夹

在使用GitLab管理代码的过程中,有时会遇到需要删除整个文件夹的情况。本文将介绍在GitLab中如何删除一个文件夹。首先,在GitLab中,文件夹是以Git仓库的形式存在的,因此删除文件夹需要在Git仓库中进行操作。步骤一:进入仓库登录G
2023-10-22

Linux中查看指定文件夹内各个子文件夹内的文件数量

count脚本#!/bin/sh numOfArgs=$# if [ $numOfArgs -ne 1 ]; thenecho -e "Usage: \nbash $0 dirForCount"exit -1 fi # args ROOTD
2022-06-04

C++如何遍历某个文件夹下面的子文件夹及其所有文件

这篇文章主要介绍了C++如何遍历某个文件夹下面的子文件夹及其所有文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方法一下面是输出当前目录下的所有文件夹以及文件的绝对路径(当
2023-06-20

如何实现全盘删除所有文件夹下_desktop.ini的批处理bat文件

这篇文章主要介绍了如何实现全盘删除所有文件夹下_desktop.ini的批处理bat文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:@echo off setlo
2023-06-09

php如何删除文件夹及其所有内容

本篇内容介绍了“php如何删除文件夹及其所有内容”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在 PHP 中删除文件和文件夹是很简单的,但如
2023-07-05

nodejs清空/删除指定文件夹下面所有文件或文件夹的方法示例

这篇文章主要介绍了nodejs清空/删除指定文件夹下面所有文件或文件夹的方法,通过两个具体案例形式分析了node.js同步删除文件/文件夹,以及异步删除文件/文件夹的相关实现技巧,涉及递归遍历与文件判断、回调等相关操作,需要的朋友可以参考下
2023-05-15

php怎么删除路径下的所有文件夹和文件

这篇文章主要介绍了php怎么删除路径下的所有文件夹和文件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php怎么删除路径下的所有文件夹和文件文章都会有所收获,下面我们一起来看看吧。php遍历一个文件夹内的所有文
2023-07-05

如何处理统计文件夹内所有文件数量和总大小的bat

这篇文章给大家介绍如何处理统计文件夹内所有文件数量和总大小的bat,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。我最近电脑不知道为什么磁盘空间会慢慢的变小,而且过一段时间之后,又会有两三GB的空间被释放出来,使用我想监
2023-06-08

php删除路径下的所有文件夹和文件的代码

这篇文章主要介绍了php删除路径下的所有文件夹和文件的代码的相关资料(php清空目录代码),需要的朋友可以参考下
2023-03-11

Python列出一个文件夹及其子目录的所有文件

python简介 Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。像Perl语言一样, Python 源代码同样遵循 G
2022-06-04

如何使用bat自动删除指定文件夹下前几天的文件

小编给大家分享一下如何使用bat自动删除指定文件夹下前几天的文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:@echo off set d=%date
2023-06-08

java如何读取某个文件夹中的全部文件(包括子文件夹)

这篇文章主要介绍了java如何读取某个文件夹中的全部文件(包括子文件夹),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-12-03

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录