1. 程式人生 > >Windows命令之 -- Del 刪除指定檔案

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