批次刪除檔案與空目錄

更新於 2024/07/09閱讀時間約 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
58會員
141內容數
樂趣體驗紀錄,沙龍房間有歌唱,生活,科技
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
linct的沙龍 的其他內容
本文詳細介紹Windows cmd指令的應用,並提供了例說明及追加說明,用戶可以學習如何使用cmd指令對檔案進行處理、選取所需的內容,以及擴展運用到其他類型的檔案,最後還介紹了cmd設計完成後的應用和自動化執行方式。
本文章介紹了CPU架構的三大類型:ARM、x86和RISC-V。著重介紹了它們的特點和市場應用情況,並提到了Nvidia採用RISC-V架構的發展經過,以及ISA的定義和重要性。
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
設計功能             將整年份計畫事項,包含每月一次或每單月一次,每雙月一次之固定日期時,需要事先準備執行的事項,先一件一件記入在文字檔內,以便能該事件來臨前幾天,以LINE訊息自動發送出該事件內容給群組全員,讓全員可以事先接到通知,事先做好準備,才不會遺忘重要計畫事件     
Google 提供了免費的雲端服務 Google Apps Script (GAS) ,我們可以撰寫一些簡易的程式APP,串接其他 Google 雲端服務 如 Google Docs ,Sheets …,就能夠幫助我們利用雲端硬碟做日常工作
(1)事前LINE主動發出通知,無論何處,所有人均可掌握值勤排班內容  (2) 換班前幾天收到通知,可事先安排交代事務給下回值勤人員,讓值勤業務能順利實施
本文詳細介紹Windows cmd指令的應用,並提供了例說明及追加說明,用戶可以學習如何使用cmd指令對檔案進行處理、選取所需的內容,以及擴展運用到其他類型的檔案,最後還介紹了cmd設計完成後的應用和自動化執行方式。
本文章介紹了CPU架構的三大類型:ARM、x86和RISC-V。著重介紹了它們的特點和市場應用情況,並提到了Nvidia採用RISC-V架構的發展經過,以及ISA的定義和重要性。
工具功能 (1) 彈性任意查詢檔案,如對來源目錄設定,檔案修改日期 設定,檔名特定字串或副檔名設定後,自動查出明細,並可展開至各階子目錄處理     (2) 依查詢後結果,可產出 LIST ,提供查詢結果之確認,再依此對檔案作複 (3) 可對檔案作移動,複製至別處,刪除處理,使電腦可騰出硬碟空間
設計功能             將整年份計畫事項,包含每月一次或每單月一次,每雙月一次之固定日期時,需要事先準備執行的事項,先一件一件記入在文字檔內,以便能該事件來臨前幾天,以LINE訊息自動發送出該事件內容給群組全員,讓全員可以事先接到通知,事先做好準備,才不會遺忘重要計畫事件     
Google 提供了免費的雲端服務 Google Apps Script (GAS) ,我們可以撰寫一些簡易的程式APP,串接其他 Google 雲端服務 如 Google Docs ,Sheets …,就能夠幫助我們利用雲端硬碟做日常工作
(1)事前LINE主動發出通知,無論何處,所有人均可掌握值勤排班內容  (2) 換班前幾天收到通知,可事先安排交代事務給下回值勤人員,讓值勤業務能順利實施
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
本文介紹了在深度學習中使用Batch Normalization來解決error surface複雜性的問題。通過特徵歸一化來加速收斂速度和訓練順利程度。同時,也提到了在測試階段使用moving average計算平均值和標準差的方法。
Thumbnail
由於開發多個專案的時候,頻繁切換本地環境的PHP版本實在太麻煩,於是想要可以直接使用指令就完成切換的功能,於是有了這篇文章。
Thumbnail
當我們需要在C#中批次更改資料夾中的檔案名稱時,我們可以使用一個自定義的C#類別。這個類別會讓我們指定資料夾路徑和新的檔名,然後它會遍歷資料夾中的檔案,為每個檔案生成一個新的名稱,新名稱由指定的檔名加上一個序號組成。
Thumbnail
How to utilize batch input and multi-processing techniques to accelerate feature engineering? 問題 在進行特徵工程的過程中,我們通常需要處理各種各樣的數據,並轉換它們成有意義的特徵,以供後續的模型訓練
5/15那天傍晚發現搬家來的文章竟然全部發佈了,感覺有點驚訝。本以爲批次是指分期發佈呢! 也發現雖然之前已刪除千篇以上的文章,但有更多原本草稿狀態沒有發佈日期,全變成20230515。嘿,搞怪。 哈,看來我又要刪文了。 不過,也會逐步整理舊文加上新資訊,尤其是轉載中又有自己的想法。
Thumbnail
用 Google 試算表內建的翻譯函式功能來批次翻譯外語單詞或句子。一行函式,值得一試!
Thumbnail
1845年Rhum J.M.就開始小批次的生產法式蘭姆酒,在當時
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
本文介紹了在深度學習中使用Batch Normalization來解決error surface複雜性的問題。通過特徵歸一化來加速收斂速度和訓練順利程度。同時,也提到了在測試階段使用moving average計算平均值和標準差的方法。
Thumbnail
由於開發多個專案的時候,頻繁切換本地環境的PHP版本實在太麻煩,於是想要可以直接使用指令就完成切換的功能,於是有了這篇文章。
Thumbnail
當我們需要在C#中批次更改資料夾中的檔案名稱時,我們可以使用一個自定義的C#類別。這個類別會讓我們指定資料夾路徑和新的檔名,然後它會遍歷資料夾中的檔案,為每個檔案生成一個新的名稱,新名稱由指定的檔名加上一個序號組成。
Thumbnail
How to utilize batch input and multi-processing techniques to accelerate feature engineering? 問題 在進行特徵工程的過程中,我們通常需要處理各種各樣的數據,並轉換它們成有意義的特徵,以供後續的模型訓練
5/15那天傍晚發現搬家來的文章竟然全部發佈了,感覺有點驚訝。本以爲批次是指分期發佈呢! 也發現雖然之前已刪除千篇以上的文章,但有更多原本草稿狀態沒有發佈日期,全變成20230515。嘿,搞怪。 哈,看來我又要刪文了。 不過,也會逐步整理舊文加上新資訊,尤其是轉載中又有自己的想法。
Thumbnail
用 Google 試算表內建的翻譯函式功能來批次翻譯外語單詞或句子。一行函式,值得一試!
Thumbnail
1845年Rhum J.M.就開始小批次的生產法式蘭姆酒,在當時