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命令效果會更好些;