批处理命令--文件篇之del
del是一个内部命令,erase是它的同义词,因此它们的功能是相同的,作用都是删除一个或多个文件。
首先还是看下语法:
删除一个或数个文件。
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%\%%iin(%files%)doifexist%%idel/s/q/f/a"%%i"echo%%~fti删除完成!
/s/q一般配合使用用于静默删除所有文件(包括子目录下的);
/f/a一般配合使用,用于删除所有的文件(含只读或隐藏或系统等属性的文件)。
详解:
1.名字可以是文件名、文件夹名、路径名等。
支持通配符,可用来删除一个或多个文件。
也可以使用多个文件名,用空格、逗号或分号分开文件名。
也可以指定目录,目录中有空格需要加双引号括起来,目录中的所有文件都会被删除。
例:
"C:\demofiles\"
del*.doc
del?A.*
deltest
delc:\test
delc:\test\*.*
Wildcards(通配符):Thesecanbecombinedwithpartofafilename(这些能与文件名的一部分组合)
*Matchanycharacters(匹配任何字符,可以一个或多个)
?MatchanyONEcharacter(匹配任一个字符,只一个)
2.参数
/P删除每一个文件之前提示确认。删除文件夹下的所有文件时,即使没有这个参数,默认也会提示。
如果不需要确认,就使用/Q(参数、命令、路径等不分大小写),注意不是/-P(/-P在这里和/P是一个样,都需要确认)。
提示:Areyousure(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/sd:\123\*.*与del/f/sd:\123\*.*并不是一样的效果,前者只删除只读文件,或者删除只读文件和除系统、隐藏文件以外的文件。
del/s/q与rd/s/q的区别
先来看下这2个命令的描述与参数
del的描述与参数
Deletesoneormorefiles.
/SDeletespecifiedfilesfromallsubdirectories.
/QQuietmode,donotaskifoktodeleteonglobalwildcard
rd的描述与参数
Removes(deletes)adirectory.
/SRemovesalldirectoriesandfilesinthespecifieddirectory
/QQuietmode,donotaskifoktoremoveadirectorytreewith/S
区别:
del/s/q是删除所有文件,不删除目录;rd/s/q是删除目录本身连同所有文件。
rd提到了一个目录树的概念,什么是目录树呢?
目录树:
目录树是一种表示文件夹和文件结构的图形方式。它可以帮助你快速查看和管理你的文件。目录树的根目录是最上层的文件夹,它包含了所有的子文件夹和文件。
在Windows系统中,你可以使用tree命令来生成目录树。例如,如果你想要生成当前文件夹的目录树,并保存到一个文本文件中,你可以输入:
tree/
这样就会在当前文件夹中创建一个名为的文件,里面包含了目录树的内容。
FolderPATHlistingforvolumeWindows
VolumeserialnumberisA83E-B07F
C:.
│
│
│
│
│
├─IC
│
│
└─DC
└─IT
下面是演示:
RD:
C:\Temprd/s/q665
C:\Tempcd665
Thesystemcannotfindthepathspecified.
DEL:
C:\Tempdel/s/q665
Deletedfile-C:\Temp\665\
C:\Temp\665\
Accessisdenied.
Deletedfile-C:\Temp\665\
Deletedfile-C:\Temp\665\IC\
Deletedfile-C:\Temp\665\DC\IT\
C:\Temp\665attrib
ARC:\Temp\665\
ASC:\Temp\665\
C:\Temp\665
ARC:\Temp\665\
C:\Temp\665del/
C:\Temp\665
ASC:\Temp\665\
C:\Temp\665del/
CouldNotFindC:\Temp\665\
C:\Temp\665del/f/
C:\Temp\665dir
VolumeindriveCisWindows
VolumeSerialNumberisA83E-B07F
DirectoryofC:\Temp\665
06/27/202311:21AMDIR.
06/27/202311:21AMDIR..
06/27/202311:12AMDIRIC
06/27/202308:01AMDIRDC
0File(s)0bytes
4Dir(s)313,234,214,912bytesfree
结论:
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。