Windows命令之 -- Del 删除指定文件

 

语法
del [Drive:][Path] FileName [ ...][/p] [/f] [/s] [/q] [/a[:Attributes]]
erase [Drive:][Path] FileName [ ...][/p] [/f] [/s] [/q] [/a[:Attributes]]
参数
[Drive:][Path] FileName
指定要删除的文件或文件集的位置和名称。FileName 为必需项。可以使用多个文件名。用空格、逗号或分号分开文件名。
/p
提示您确认是否删除指定的文件。
/f
强制删除只读文件。
/s
从当前目录及其所有子目录中删除指定文件。显示正在被删除的文件名。
/q
指定安静模式。不对删除确认作出提示。
/a
根据指定的属性删除文件。
Attributes
可以是下表中列出的文件属性中的任意一种。 属性 描述
r 只读
a 存档
s 系统
h 隐藏
- 前缀表明“非”
/?
在命令提示符下显示帮助。
注释
使用 /p
如果使用 /p,del 将显示文件名,并发送如下消息:
FileName,要删除 吗?
按 Y 确认删除,按 N 取消删除并显示下一个文件名(如果指定了一组文件)。按 Ctrl+C 停止 del 命令。
禁用命令扩展
如果禁用命令扩展,/s 命令行选项显示没有找到的任意文件名,而不是显示正在删除的文件名(即,行为相反)。有关禁用命令扩展的详细信息,请参阅“相关主题”中的 cmd。
一次删除多个文件
通过键入 del 命令,后接 [Drive:]Path,可以删除文件夹中的所有文件。例如,以下命令可删除 /Work 文件夹中的所有文件:
del /work
还可以使用通配符(* 和 ?)一次删除多个文件。但是,在使用 del 命令时要慎重地使用通配符,以避免无意中删除文件。例如,如果键入如下命令:
del *.*
Del 命令显示以下提示:
该目录中的所有文件都被删除!是否确认 (Y/N)?
要删除当前文件夹中的所有文件,按 Y,然后按 Enter。要取消删除,按 N,然后按 Enter。
在与 del 命令一起使用通配符来删除一组文件之前,使用带有相同通配符的 dir 命令查看该组中包括的所有文件的列表。
要点
使用 del 从磁盘删除文件后,将无法检索。
可以从“故障恢复控制台”使用 del 命令(带有各种参数)。
示例
要删除驱动器 C:/ 上名为 Test 文件夹中的所有文件,请键入如下命令之一:
del c:/test
del c:/test/*.*

-----------------------------------------

:: cosdos 2009/10/25
:: --- 以Windows当前系统日期为基础。
:: --- 例当前系统日期:2009/10/25,则删除
:: --- 所有以“数据库备份_”开头,后缀日期
:: --- 小于等于“20090925”的所有文件加。

@Echo off
Setlocal EnableDelayedExpansion
Title 删除当前目录中,上个月的“数据库备份_”文件夹
:: cosdos 2009/10/25
Call :main
Pause
Exit

:LastMonth
    Set /a yyyy=%1+10000
    Set /a mm=%2+100
    Set /a dd=%3+100
    If "%2" == "01"  (
        Set mm=112 & Goto year
    ) else (
        Set /a mm-=1 & Set lastmonthday=%yyyy:~1,4%!mm:~1,2!%dd:~1,2%
    )
    Exit /b
    :year
    Set /a yyyy-=1
    Set lastmonthday=%yyyy:~1,4%%mm:~1,2%%dd:~1,2%
    Exit /b
   
:main
    Set myfolder=数据库备份_
    Set yyyy=%date:~0,4%
    Set mm=%date:~5,2%
    Set dd=%date:~8,2%
    Call:LastMonth %yyyy% %mm% %dd%
    Echo.
    Echo 删除当前目录中,“%myfolder%%lastmonthday%”之前的文件夹
    For /d %%i in (数据库备份_*) do (
        Set folderdate=%%i&&if /i !folderdate:~-8! lEQ %lastmonthday% rd /s /q %%i
    )
    Exit /b

-----------------------

 

@echo off
title 编程论坛批量删除备份数据库DOS程序                      By:不说也罢
color 37
:First
cls
echo.
echo         欢迎使用编程论坛批量删除备份数据库DOS程序
echo.
echo                    制作:不说也罢
echo.
echo.
echo  本程序是应编程论坛管理员“静夜思”要求所特别制作,请勿删除作者名字。
echo.
echo  目录规则如从 数据库备份_19990101 到 数据库备份_29991231 之间的所有循环目录。
echo  注意:年份和日期都是四位数字。
echo.
goto Date
:Date
echo.
set /p m=请输入四位数的年(如2009)  :
echo.
set /p d1=请输入起始日期(如0101)   :
set /p d2=请输入终止日期(如1231)   :
echo.
echo 继续操作将 删除 当前目录下从 数据库备份_%m%%d1% 到 数据库备份_%m%%d2% 之间的所有目录。
echo.
set /p go=你确认继续下一步操作吗?(Y/N):
if %go%==y goto Do else goto Begin
if %go%==Y goto Do else goto Begin
goto Begin
:Begin
echo.
set /p go=您要继续执行批量删除操作吗?(Y/N):
if %go%==y goto Date else goto Begin
if %go%==Y goto Date else else goto Begin
exit
:Do
echo.
echo 正在执行 删除 操作,请稍后...
  for /l %%i in (%d1%,1,%d2%) do if %%i LSS 1000 (rd 数据库备份_%m%%j%0%%i /s /q) else rd 数据库备份_%m%%%i /s /q
echo.
echo 删除目录 操作执行完毕,请检查执行效果!
echo.
goto Begin

 

-----

有文件的文件夹会被删除:

CODE: [Copy to clipboard]

@echo off
for /f "delims=" %%a in ('dir /ad /b D:/scan') do (
  dir /a-d /b /s "D:/scan/%%a" && rd /s/q "D:/scan/%%a"
) >nul 2>nul
pause

---------------
有文件或文件夹的文件夹会被删除:
CODE: [Copy to clipboard]

@echo off
pushd D:/scan
for /f "delims=" %%a in ('dir /ad /b') do (
  for /f %%i in ('dir /a/b "%%a"') do if exist "%%a" rd /s/q "%%a"
)
POPD
pause

你可能感兴趣的:(Windows命令之 -- Del 删除指定文件)