【Windows批處理III】實現刪除含自定字符串的文件和文件夾(搜索子目錄)


1)目的:實驗室小網空間因鏡像版本太多,容量告警,希望清出一部分空間

具體需求:刪除E盤下,所有含rar字符串的文件;

              刪除E盤下,所有含hi6620字符串文件夾;

步驟:

(風險請知:如果不check告警的文件file.log和folder.log,而在腳本暫停時繼續,有誤刪的風險)

1.將下面批處理保存為xxx.bat

2.運行腳本

腳本如下:

@echo off

rem 如果是磁盤符,最好加上\符合
set DESC_PATH=E:\

rem 只需要部分字符
set file_str=rar
set folder_str=hi6620

rem 控制開關
set search_file=1
set search_folder=1
set del_flag=1

rem 臨時文件,備份記錄用,不用修改
set file_log=file.log
set folder_log=folder.log
set workspace=%CD%

rem 只查找文件
if %search_file%==1 (
    cd /d %DESC_PATH%
    rem 搜尋子目錄,排除文件夾
    dir /b /s /a-d | find "%file_str%" > %workspace%\%file_log%
)

rem 只查找目錄
if %search_folder%==1 (
    cd /d %DESC_PATH%
    rem 目的:希望不統計文件在內
    dir /b /s /a-a | find "%folder_str%" > %workspace%\%folder_log%
)

rem 待考慮引入輸入判斷yes or no 決定是否刪除,這樣更人性
echo Warning:%workspace%\%file_log% and %folder_log%, please check ...
pause

cd /d %workspace%
if %del_flag%==1 (
    if %search_file%==1 (
        for /f %%i in (%workspace%\%file_log%) do  (
            if exist %%i del %%i
        )
    )
    if %search_folder%==1 (
        for /f %%i in (%workspace%\%folder_log%) do  (
            if exist %%i rd /s /q %%i
        )
    )
)

cd /d %workspace%
pause

2)check兩個臨時文件時,建議用命令排除一些你不想看到的條目

比如排除含img或lib或log或tool字符串的條目,將結果存入tmp.log,命令如下:

type folder.log | findstr /v "img lib log tool" > tmp.log

點評:腳本中用的是find命令,只能一次搜索一個字符串,如果該為findstr命令效果會更好些;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM