Windows删除命令DEL详解

原文:http://seosin.blog.163.com/blog/static/116707084200942041153747/

删除一个或数个文件。

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

  names         指定一个或数个文件或目录列表。通配符可被用来
                删除多个文件。如果指定了一个目录,目录中的所
                有文件都会被删除。

  /P            删除每一个文件之前提示确认。
  /F            强制删除只读文件。
  /S            从所有子目录删除指定文件。
  /Q            安静模式。删除全局通配符时,不要求确认。
  /A            根据属性选择要删除的文件。
  attributes      R  只读文件                     S  系统文件
                  H  隐藏文件                     A  存档文件
                  -  表示“否”的前缀

如果命令扩展名被启用,DEL 和 ERASE 会如下改变:

/S 开关的显示句法会颠倒,即只显示已经
删除的文件,而不显示找不到的文件

 

 

 

原文:http://blog.csdn.net/62guangye/archive/2010/01/29/5268627.aspx

 

语法
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值