天天看点

批处理命令--文件篇之del

作者:批处理进阶

#暑期创作大赛#

批处理命令--文件篇之del

del是一个内部命令,erase是它的同义词,因此它们的功能是相同的,作用都是删除一个或多个文件。

首先还是看下语法:

批处理命令--文件篇之del

删除一个或数个文件。

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

names 指定一个或数个文件或目录列表。通配符可被用来

删除多个文件。如果指定了一个目录,目录中的所有文件都会被删除。(filenames,foldernames,pathnames)

/P 删除每一个文件之前提示确认。(prompt)

/F 强制删除只读文件。(force)

/S 从所有子目录删除指定文件。(subdirectory)

/Q 安静模式。删除全局通配符时,不要求确认。(quiet)

/A 根据属性选择要删除的文件。(attributes/attrib)

attributes

R 只读文件 S 系统文件

H 隐藏文件 A 存档文件

- 表示“否”的前缀

这个命令比较简单,主要是2个方面:

1.这个命令是删除文件的命令,不是文件夹。

2.批处理中一般带参数使用,如del /s /q /f /a。

如一个批处理的语句:

for /r %path1%\ %%i in (%files%) do if exist %%i del /s /q /f /a "%%i" &echo %%~fti删除完成!

/s /q一般配合使用用于静默删除所有文件(包括子目录下的);

/f /a一般配合使用,用于删除所有的文件(含只读或隐藏或系统等属性的文件)。

详解:

1.名字可以是文件名、文件夹名、路径名等。

支持通配符,可用来删除一个或多个文件。

也可以使用多个文件名,用空格、逗号或分号分开文件名。

也可以指定目录,目录中有空格需要加双引号括起来,目录中的所有文件都会被删除。

例:

del file1.txt file2.txt "C:\demo files\file3.txt"

del *.doc

del ?A.*

del test

del c:\test

del c:\test\*.*

Wildcards(通配符): These can be combined with part of a filename(这些能与文件名的一部分组合)

* Match any characters (匹配任何字符,可以一个或多个)

? Match any ONE character(匹配任一个字符,只一个)

2.参数

/P 删除每一个文件之前提示确认。删除文件夹下的所有文件时,即使没有这个参数,默认也会提示。

如果不需要确认,就使用/Q(参数、命令、路径等不分大小写),注意不是/-P(/-P在这里和/P是一个样,都需要确认)。

提示:Are you sure (Y/N)?,或 Delete (Y/N)? 按y或Y就是删除,按N或n就是不删除。

/F 遇到访问被拒绝,无法删除的情况,一般是遇到只读文件了,使用/F来强制删除只读文件。

/F /A 遇到找不到文件的情况,无法删除;如果文件真实存在,一般是遇到隐藏或系统文件了,使用/F /A删除,这也是万用的删除搭配。

/S 还想删除目录树,子目录下的文件,加上/S。

/Q 删除不需要确认,静默删除。

/AR同于/A:R,不同于/A-R,前者表示只读文件,后者表示除只读文件外。

另外del /ar /s d:\123\*.*与del /f /s d:\123\*.*并不是一样的效果,前者只删除只读文件,或者删除只读文件和除系统、隐藏文件以外的文件。

del /s /q与rd /s /q的区别

先来看下这2个命令的描述与参数

del的描述与参数

Deletes one or more files.

/S Delete specified files from all subdirectories.

/Q Quiet mode, do not ask if ok to delete on global wildcard

rd的描述与参数

Removes (deletes) a directory.

/S Removes all directories and files in the specified directory

in addition to the directory itself. Used to remove a directory tree.

/Q Quiet mode, do not ask if ok to remove a directory tree with /S

区别:

del /s /q是删除所有文件,不删除目录;rd /s /q是删除目录本身连同所有文件。

rd提到了一个目录树的概念,什么是目录树呢?

目录树:

目录树是一种表示文件夹和文件结构的图形方式。它可以帮助你快速查看和管理你的文件。目录树的根目录是最上层的文件夹,它包含了所有的子文件夹和文件。

在Windows系统中,你可以使用tree命令来生成目录树。例如,如果你想要生成当前文件夹的目录树,并保存到一个文本文件中,你可以输入:

tree /f > list.txt

这样就会在当前文件夹中创建一个名为list.txt的文件,里面包含了目录树的内容。

Folder PATH listing for volume Windows

Volume serial number is A83E-B07F

C:.

│ list.txt

│ rty.txt

│ rty.txtUy.txt

│ rUy.txt

├─IC

│ CT.log

└─DC

└─IT

dd.ico

下面是演示:

RD:

C:\Temp>rd /s /q 665

C:\Temp>cd 665

The system cannot find the path specified.

DEL:

C:\Temp>del /s /q 665

Deleted file - C:\Temp\665\list.txt

C:\Temp\665\rty.txt

Access is denied.

Deleted file - C:\Temp\665\rty.txtUy.txt

Deleted file - C:\Temp\665\IC\CT.log

Deleted file - C:\Temp\665\DC\IT\dd.ico

C:\Temp\665>attrib

A R C:\Temp\665\rty.txt

A S C:\Temp\665\rUy.txt

C:\Temp\665>attrib rty.txt

A R C:\Temp\665\rty.txt

C:\Temp\665>del /f rty.txt

C:\Temp\665>attrib ruy.txt

A S C:\Temp\665\rUy.txt

C:\Temp\665>del /f ruy.txt

Could Not Find C:\Temp\665\ruy.txt

C:\Temp\665>del /f /a ruy.txt

C:\Temp\665>dir

Volume in drive C is Windows

Volume Serial Number is A83E-B07F

Directory of C:\Temp\665

06/27/2023 11:21 AM <DIR> .

06/27/2023 11:21 AM <DIR> ..

06/27/2023 11:12 AM <DIR> IC

06/27/2023 08:01 AM <DIR> DC

0 File(s) 0 bytes

4 Dir(s) 313,234,214,912 bytes free

结论:

1.rd /s /q可以删除目录及其子目录下的文件,含系统文件、隐藏文件、只读文件等

2.del /s /q只能删除目录及其子目录下的文件,不能删除目录,也不能删除只读、系统或隐藏文件。

如果要删除只读文件,需加参数/f,如果要删除系统或隐藏文件或其他属性的文件,需要另加参数/a, 加了/f /a参数的del /s /q /f /a除了不能删除目录基本等同于rd /s /q。

换言之,如果要保留目录用del /s /q /f /a,如果不保留目录用rd /s /q。

继续阅读