#暑期创作大赛#
批处理命令--文件篇之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%\ %%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。