批次刪除檔案與空目錄

更新 發佈閱讀 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
linct的沙龍
77會員
289內容數
樂趣體驗紀錄,沙龍房間有歌唱,生活,科技
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
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
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
資料庫之備份工作大都是自動執行,但是執行結果是否成功,需要安排人員去檢查,有時疏忽忘記確認作業,致備份工作失敗仍不知道,等到有一天需要回復舊有資料的場合時,才發現找不到過去某段期間的備份資料,造成無法彌補之後果。   2.    改善: 2.1 設計一執行檔,功能為打開備
Thumbnail
資料庫之備份工作大都是自動執行,但是執行結果是否成功,需要安排人員去檢查,有時疏忽忘記確認作業,致備份工作失敗仍不知道,等到有一天需要回復舊有資料的場合時,才發現找不到過去某段期間的備份資料,造成無法彌補之後果。   2.    改善: 2.1 設計一執行檔,功能為打開備
Thumbnail
上回說明的手動下指令,傳出訊息。為了節省手動輸入之動作,將欲執行的curl指令內容,事先作成執行檔。當需要傳送訊息時,只要按兩下執行檔,便可立刻傳出訊息至LINE群組內之全員 2. 說明 2.1 因每次要傳送內容不同,將這些會變動的訊息資料,輸入後保存 於bat執行檔內
Thumbnail
上回說明的手動下指令,傳出訊息。為了節省手動輸入之動作,將欲執行的curl指令內容,事先作成執行檔。當需要傳送訊息時,只要按兩下執行檔,便可立刻傳出訊息至LINE群組內之全員 2. 說明 2.1 因每次要傳送內容不同,將這些會變動的訊息資料,輸入後保存 於bat執行檔內
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News