批次刪除檔案與空目錄

更新於 發佈於 閱讀時間約 16 分鐘

1     作業流程

1.1 先取得欲刪除檔案集的相關資訊,並輸入5個參數值

1.2 依照取得的參數值,執行欲刪除的檔案   

1.3檔案刪除執行後,若目錄為空,則執行刪除該空目錄       

          

2     作業說明  

2.1  欲刪除檔案之的相關內容,使用者指定輸入,並設定如下5個參數

 PAR1--- 來源資料夾位址,  例D:\BACKUP

 PAR2 --- 幾天前檔案欲刪除,例 -30 or -2023/12/31 default=0

 PAR3--- 欲刪除檔案之名稱與副檔名 ,例TW*.txt or *高雄*  default=*.*

      PAR4--- 執行後出力檔案之存放路徑,例D:\BK   default=D:\DESTINATION

      PAR5--- 刪除作業之判斷,當輸入D 時,執行檔案刪除;

                    輸入非D 時,不會刪除檔案,只提供確認參考

輸入非D 時,如set PAR5=h , 則不會刪除,只會出力符合條件的file

結果txt出力如下:

**---The below parameters you want to process ---    週五 2024/07/05 15:04:47.59---

**1 Source path     :D:\TEST_BK

**2 Date or days    :-2024/10/1

**3 Sring of files  :*.pptx

**4 Destination path:D:\DESTINATION

ECHO is on.

 

 [ Inquired file list ] 

 

"D:\TEST_BK\新增 Microsoft PowerPoint 簡報.pptx"

**-------------------------------------- Finished at 週五 2024/07/05 15:04:47.66---

 

其他 參數 設定參考:

       set PAR1=D:\TEST_BK        

       set PAR2=-90      

       set PAR3=*.mp4*       

       set PAR4=D:\DESTINATION        

       set PAR5=D

          

2.2 刪除作業 

* 指定之來源資料夾(PAR1)目錄下包含子目錄下的檔案,若符合就刪除       

* 若刪除執行發生錯誤時,仍會繼續不會中斷,且將錯誤訊息出力至txt file供參考        

     

2.3 刪除空目錄作業, 即執行CALL  RD_EMPTY_fix-par.cmd   

2.3.1 來源目錄下每個目錄,每次執行都會查看是否存在檔案,若該目錄下0個檔案,則執行刪除該目錄

2.3.2 空目錄被刪除後,出力至txt檔案,記錄該目錄名稱

 

3     實例說明

3.1 來源目錄之指定

 本例設定為   set PAR1= D:\TEST_BK

3.2出力檔案名 : Inquiry_error_result.txt

<1>刪檔案錯誤場合

       若不能刪除檔案 會列出原因 (因權限關係,無法讀取)

<2>正常刪檔案場合

       刪除檔案正常時,txt列出訊息如下:

 **---The below parameters you want to process ---    週五 2024/07/05 15:15:20.94---

**1 Source path     :D:\TEST_BK

**2 Date or days    :-2024/7/31

**3 Sring of files  :*.*

**4 Destination path:D:\DESTINATION

ECHO is on.

 

 [ Cannot DEL file ] 

**-------------------------------------- Finished at 週五 2024/07/05 15:15:21.12---

<3>找無對象檔案場合,

   因為選取日期 +2025/1/1 ,故找無檔案,執行結果出力於 Inquiry_error_result.txt 內容如下:

 **---The below parameters you want to process ---    週五 2024/07/05 14:34:47.43---

**1 Source path     :D:\TEST_BK

**2 Date or days    :+2025/1/1

**3 Sring of files  :*.*

**4 Destination path:D:\DESTINATION

ECHO is on.

 

 [ Cannot DEL file ] 

  ERROR: No files found with the specified search criteria. 

**-------------------------------------- Finished at 週五 2024/07/05 14:34:47.56---

3.3 空目錄被刪除後,作業結果訊息出力至txt,empFOLDER_RD.txt內記錄兩個空目錄被刪除,參考如下:


[ Empty folder rased ] ----- on 週五 2024/07/05 14:34:47.57 

  "D:\TEST_BK\LDPlayer"   

  "D:\TEST_BK\YunGameDownload\leidian\Plugins"   

 

4     運用效果

4.1定期執行自動刪除作業bat,可節省硬體空間

4.2將bat設定自動排程,刪除檔案之作業,省下人力工時,提升工作效率

 

5     將來運用  

5.1 個人電腦內各個硬碟槽或伺服器公用槽內資料夾,均可比照運用  

5.2 各應用系統內各種平日交易檔案,歷史紀錄log檔等,均可比照運用,否則老舊過期檔案一直增加,將使硬碟容量龐大,影響系統效能或致系統異常當機。       

          

6     設計撰寫 :        

6.1刪除檔案之 Bat :DelF+RD.bat 

rem echo off
CHCP 65001
rem ----本檔案需保存為 UTF-8 ,CHCP 65001 為了顯示特殊字元(漢字日文) 。big5 ,CHCP 950
rem 入力檔目錄需先輸入,出力檔案名 Inquiry_error_result.txt
D:
cd D:\LINCT_material\PC\cmd-bat\cmd\Manipulate_file\Del99

rem ---[Noted] 不可用Iset PAR1=I:\99.暫存資料 ,因 schedule task 無法認得 ----
set PAR1=D:\TEST_BK

set PAR2=-2024/7/31
set PAR3=*.*
set PAR4=D:\DESTINATION
set PAR5=D

set PAR_ERR=N

IF NOT EXIST "%PAR1%" (echo ###ERROR : %PAR1% is not exist & set PAR_ERR=Y & goto END )
IF NOT EXIST %PAR4% ( md %PAR4% )
rem pause chk par1:%PAR1% par4:%PAR4% -----

echo **---The below parameters you want to process --- %DATE% %TIME%---> %PAR4%\Inquiry_error_result.txt
echo **1 Source path :%PAR1% >> %PAR4%\Inquiry_error_result.txt
echo **2 Date or days :%PAR2% >> %PAR4%\Inquiry_error_result.txt
echo **3 Sring of files :%PAR3% >> %PAR4%\Inquiry_error_result.txt
echo **4 Destination path:%PAR4% >> %PAR4%\Inquiry_error_result.txt
echo >> %PAR4%\Inquiry_error_result.txt

echo *** Files 執行中...for "%PAR1%" %PAR2% %PAR3% %PAR4% %PAR5%
IF %PAR5% == D ( CALL :DELFile ) else ( CALL :FIND )

:END
:: ---Noted "%PAR1%" 需有" " ,因資料夾名有(),致IF 指令語法錯誤 ---
IF %PAR_ERR% == Y (
echo *** Job ABEND 異常中止 for "%PAR1%" or %PAR4% is not exist---
echo *** Job ABEND 異常中止 for "%PAR1%" or %PAR4% is not exist---> %PAR4%\Inquiry_error_result.txt
) ELSE (
echo *** Files 執行完了 for "%PAR1%" %PAR2% %PAR3% %PAR4% %PAR5%
echo *---Please check result file save in %PAR4%\Inquiry_error_result.txt )
echo **-------------------------------------- Finished at %DATE% %TIME%--->> %PAR4%\Inquiry_error_result.txt
rem pause del end chk??

CALL RD_EMPTY_fix-par.cmd

rem pause job final end
EXIT

:DELFile
:: ---- del file 若成功del 無訊息印出, 只有錯誤有發生時,才會印出 ----
echo. >> %PAR4%\Inquiry_error_result.txt
echo [ Cannot DEL file ] >> %PAR4%\Inquiry_error_result.txt

For /f "tokens=* delims=?" %%A in ( 'forfiles /P "%PAR1%" /S /D %PAR2% /M "%PAR3%" /c "cmd /c del /F /Q /A @path" 2^>^&1 ' ) do ( echo %%A >> %PAR4%\Inquiry_error_result.txt )
exit /b

:FIND
echo. >> %PAR4%\Inquiry_error_result.txt
echo [ Inquired file list ] >> %PAR4%\Inquiry_error_result.txt
:: ---- echo inquiry all file list out, 包括存取被拒的file 也會印出 ----
forfiles /P "%PAR1%" /S /D %PAR2% /M "%PAR3%" /c "cmd /c echo @path ">>%PAR4%\Inquiry_error_result.txt 2^>^&1
exit /b


6.2刪除空目錄之cmd : RD_EMPTY_fix-par.cmd

rem ----本檔案需保存為 UTF-8 ,CHCP 65001 為了顯示特殊字元(漢字日文) -----
rem ---檢查目錄下含子目錄,若為空,則只刪除該下之空目錄 ,並出力 D:\DESTINATION\empFOLDER_RD.txt----
rem @echo on
@echo off
rem CHCP 65001
rem ---注意本for只找出目錄(含子目錄),沒找出file,
rem echo [ Empty folder rased ] ----- on %DATE:~0,4%/%DATE:~5,2%/%DATE:~8,2% >D:\DESTINATION\empFOLDER_RD.txt
echo [ Empty folder rased ] ----- on %DATE% %TIME% >D:\DESTINATION\empFOLDER_RD.txt

echo. >>D:\DESTINATION\empFOLDER_RD.txt
set /a n=0
set n_p1=N

:: ----PAR1 FIX 取得 -------
:Enter_par1

IF NOT EXIST "%PAR1%" ( echo ###ERROR : %PAR1% path is not exist & goto EOF )

for /f "delims=" %%i in ('dir "%PAR1%" /ad /b /s') do CALL :AAA "%%i"
if %n_p1%==N ( CALL :RD_Process "%PAR1%" )
echo --- To check RD result in D:\DESTINATION\empFOLDER_RD.txt-----
exit /b
rem goto EOF

rem ---找出的目錄內 存有的目錄與檔案共有幾個file,若0個,即是為空目錄,則 rase dir ---------
rem ---需有"delims=" 又 參數 %%i必須加" ", 這樣目錄名/檔名有空白,才可完整取出 ----
:AAA
set n_p1=Y
set /a n=0

for /f "delims=" %%j in ('dir %1 /a /b ' ) do ( set /a n=n+1 )
if %n%==0 ( CALL :RD_Process %1 )
exit /b

:RD_Process
RD %1
echo %1 >>D:\DESTINATION\empFOLDER_RD.txt
echo ====== To check dir=%1 , file cnt=%n% , PAR1_ALL_emp=%n_p1%
exit /b

:EOF
rem pause --- job is normal end


6.3   bat檔案需保存為 UTF-8 ,cmd 追加CHCP 65001 為了能正常顯示特殊字元漢字或日文 

------by linct-------

留言
avatar-img
留言分享你的想法!
avatar-img
linct的沙龍
64會員
203內容數
樂趣體驗紀錄,沙龍房間有歌唱,生活,科技
linct的沙龍的其他內容
2025/03/31
比爾·蓋茲於1999年出版的《數位神經系統》一書,至今仍具有參考價值。本文探討該書的核心概念,如何在當今的科技環境下應用數位神經系統,並提出一些需要調整的部分。
Thumbnail
2025/03/31
比爾·蓋茲於1999年出版的《數位神經系統》一書,至今仍具有參考價值。本文探討該書的核心概念,如何在當今的科技環境下應用數位神經系統,並提出一些需要調整的部分。
Thumbnail
2025/01/26
此程式利用批次檔(bat)結合vbscript,自動篩選Windows事件紀錄,並產生Excel報表,方便管理人員統計與分析系統事件。
Thumbnail
2025/01/26
此程式利用批次檔(bat)結合vbscript,自動篩選Windows事件紀錄,並產生Excel報表,方便管理人員統計與分析系統事件。
Thumbnail
2025/01/20
此程式 可將 CSV 檔案資料轉換並更新至 Excel 檔案,減少檔案大小並方便傳輸。程式可自訂 CSV、Excel 檔案路徑及更新範圍,多種儲存格式與應用場景,如讀取 TXT 檔案、保留 Excel 巨集公式及設定排程自動執行等。
Thumbnail
2025/01/20
此程式 可將 CSV 檔案資料轉換並更新至 Excel 檔案,減少檔案大小並方便傳輸。程式可自訂 CSV、Excel 檔案路徑及更新範圍,多種儲存格式與應用場景,如讀取 TXT 檔案、保留 Excel 巨集公式及設定排程自動執行等。
Thumbnail
看更多
你可能也想看
Thumbnail
本文介紹瞭如何使用BAT腳本和CMD指令來自動執行檔案和空目錄的刪除作業。通過設定各種參數和指令,可以快速、有效地執行定期刪除作業,節省硬體空間並提升工作效率。
Thumbnail
本文介紹瞭如何使用BAT腳本和CMD指令來自動執行檔案和空目錄的刪除作業。通過設定各種參數和指令,可以快速、有效地執行定期刪除作業,節省硬體空間並提升工作效率。
Thumbnail
本文詳細介紹Windows cmd指令的應用,並提供了例說明及追加說明,用戶可以學習如何使用cmd指令對檔案進行處理、選取所需的內容,以及擴展運用到其他類型的檔案,最後還介紹了cmd設計完成後的應用和自動化執行方式。
Thumbnail
本文詳細介紹Windows cmd指令的應用,並提供了例說明及追加說明,用戶可以學習如何使用cmd指令對檔案進行處理、選取所需的內容,以及擴展運用到其他類型的檔案,最後還介紹了cmd設計完成後的應用和自動化執行方式。
Thumbnail
Visual Basic for Applications(VBA)是一種功能強大的程式語言,廣泛用於自動化 Microsoft Office 應用程式中的重複性任務。在這篇教學文章中,我們將介紹如何使用 VBA 來新增、刪除和移動檔案。
Thumbnail
Visual Basic for Applications(VBA)是一種功能強大的程式語言,廣泛用於自動化 Microsoft Office 應用程式中的重複性任務。在這篇教學文章中,我們將介紹如何使用 VBA 來新增、刪除和移動檔案。
Thumbnail
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
Thumbnail
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
Thumbnail
在 Windows 中,一般是透過應用程式介面刪除應用程式,但有時候會因為用多了 linux 系統而習慣自己手動刪除應用程式 🤣,但在 windows 系統這樣操作的話會出現一個小問題 -> 就是明明應用程式已經不在了,但是在「已安裝的應用程式」的清單中卻還能看到它,這篇就來教大家如何將它們刪除
Thumbnail
在 Windows 中,一般是透過應用程式介面刪除應用程式,但有時候會因為用多了 linux 系統而習慣自己手動刪除應用程式 🤣,但在 windows 系統這樣操作的話會出現一個小問題 -> 就是明明應用程式已經不在了,但是在「已安裝的應用程式」的清單中卻還能看到它,這篇就來教大家如何將它們刪除
Thumbnail
如果有在Windows系統中備份資料的需求,如果可以寫好一個批次檔並使用工作排程定期複製檔案到指定目錄那就太方便了,本篇文張教你使用xcopy指令實現的一個簡易的bat。
Thumbnail
如果有在Windows系統中備份資料的需求,如果可以寫好一個批次檔並使用工作排程定期複製檔案到指定目錄那就太方便了,本篇文張教你使用xcopy指令實現的一個簡易的bat。
Thumbnail
由於開發多個專案的時候,頻繁切換本地環境的PHP版本實在太麻煩,於是想要可以直接使用指令就完成切換的功能,於是有了這篇文章。
Thumbnail
由於開發多個專案的時候,頻繁切換本地環境的PHP版本實在太麻煩,於是想要可以直接使用指令就完成切換的功能,於是有了這篇文章。
Thumbnail
資料庫之備份工作大都是自動執行,但是執行結果是否成功,需要安排人員去檢查,有時疏忽忘記確認作業,致備份工作失敗仍不知道,等到有一天需要回復舊有資料的場合時,才發現找不到過去某段期間的備份資料,造成無法彌補之後果。   2.    改善: 2.1 設計一執行檔,功能為打開備
Thumbnail
資料庫之備份工作大都是自動執行,但是執行結果是否成功,需要安排人員去檢查,有時疏忽忘記確認作業,致備份工作失敗仍不知道,等到有一天需要回復舊有資料的場合時,才發現找不到過去某段期間的備份資料,造成無法彌補之後果。   2.    改善: 2.1 設計一執行檔,功能為打開備
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News